当前位置: 首页 > article >正文

【VIM】vim 常用命令

文章目录

      • 插入模式
      • 光标移动
      • 拷贝/粘贴/删除/撤销
      • 块操作
      • 分屏
      • 代码缩进
      • 命令组合使用
      • 其他

前言:本文内容大部分摘抄自酷壳和博客园   –   CoolShell – 陈皓   博客园 – 易先讯

插入模式

  • a → 在光标后插入
  • o → 在当前行后插入一个新行
  • O → 在当前行前插入一个新行
  • cw → 替换从光标所在位置后到一个单词结尾的字符

光标移动

  • 0 → 数字零,到行头
  • $ → 到本行行尾
  • gg → 到第一行
  • G → 到最后一行
  • :N → 到第N行
  • w → 到下一个单词的开头
  • e → 到下一个单词的结尾
  • % : 匹配括号移动,包括 (, {, [ (实用)
  • *#: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个) (实用)
  • /pattern:向下查找匹配指定模式的文本,按 n 查找下一个匹配项,按 N 查找上一个匹配项 (实用)
  • fa → 到下一个为a的字符处,你也可以 fs 到下一个为 s 的字符

拷贝/粘贴/删除/撤销

  • dd → 删除当前行,并把删除的行存到剪贴板里

  • ndd:剪切从光标所在行开始的 n 行

  • d$:剪切从光标所在位置到行末的文本

  • dG:剪切从光标所在行到文件末尾的文本

  • v 进入可视模式,移动光标选择文本,然后按 d 剪切选中的文本 (实用)

    可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择,然后,你可能d,也可y,也可以变大写等

  • yy → 拷贝当前行当行于 ddP

  • y 的其他操作通 dd

  • p → 粘贴剪贴板

  • x → 删当前光标所在的一个字符

  • u → 撤销操作

  • Ctrl+r → 撤销 “撤销操作”,相当于保持不变

块操作

块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

  • 0 → 到行头
  • <C-v> → 开始块操作
  • <C-d> → 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的)
  • I-- [ESC]I 是插入,插入“--”,按ESC键来为每一行生效,可以在行内的任意位置生效。
  • A-- [ESC] → 在每一行的行后插入

分屏

  • :split → 创建分屏 (:vsplit创建垂直分屏)
  • <C-w><dir> : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏。

代码缩进

  • ctrl+v 加入可视化操作,选择代码块,然后:
  • J → 把所有的行连接起来(变成一行)
  • <> → 左右缩进
  • = → 自动给缩进

命令组合使用

你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干:

例如 0y$ 命令意味着:

  • 0 → 先到行头
  • y → 从这里开始拷贝
  • $ → 拷贝到本行最后一个字符

你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。

你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。

其他

  • . → (小数点) 可以重复上一次的命令
  • N → 重复某个命令N次
  • gU (变大写)
  • gu (变小写)


http://www.kler.cn/a/399203.html

相关文章:

  • 基于单片机智能温室大棚监测系统
  • uniapp 实现tabbar分类导航及滚动联动效果
  • LabVIEW中的UDP与TCP比较
  • 遇到 mysql_config not found 错误
  • 力扣题目解析--括号生成
  • 移除元素(leetcode 27)
  • [C/C++] move示例
  • 198. 打家劫舍【C++】【动态规划】
  • Nature Electronics|综述| 柔性脑机接口 (健康监测/柔性电极/可植入式电子/可穿戴电子/脑机接口/柔性电子/人机交互)
  • 【Mysql】Mysql函数(上)
  • 实用教程:如何无损修改MP4视频时长
  • leetcode-44-通配符匹配
  • Jenkins + gitee 自动触发项目拉取部署(Webhook配置)
  • 【JSOO】设计模式
  • 2024-11-15 Element-ui的tab切换中table自适应宽度无法立即100%的问题
  • Linux高阶——1116—SOCKET套接字基础
  • 数据结构大致分类
  • 函数式组件和类组件的区别
  • WPF+MVVM案例实战、自定义控件和特效实现
  • 解析安卓镜像包和提取DTB文件的操作日志
  • Unity6 + Android Studio 开发环境搭建【备忘】
  • 机器学习实战笔记32-33:网格搜索原理、参数详解及代码实操
  • 关于性能测试:数据库的 SQL 性能优化实战
  • STL序列式容器之priority_queue
  • vue使用List.reduce实现统计
  • 前端开发设计模式——责任链模式