Vim 常用命令

本文介绍 Vim 常用操作命令及快捷键,算是入门级使用。

一、打开、保存、关闭文件

  • :w 保存文件
  • :w vpser.net 保存至 vpser.net 文件
  • :q 退出编辑器,如果文件已修改请使用下面的命令
  • :q! 退出编辑器,且不保存
  • :wq 退出编辑器,且保存文件

:w 要保存文件路径 可以保存文件到指定路径下

二、移动

2.1、字符间跳转

  • j 下移一行
  • k 上移一行
  • h 左移一个字符
  • l 右移一个字符
  • 空格键 向右
  • Backspace 向左
  • Enter 移动到下一行首
  • - 移动到上一行首
  • shift + 6 跳转到行首
  • shift + 4 跳转到行尾

2.2、单词间跳转

  • w:跳转至下一个单词或后一个单词的词首
  • e:跳转至当前或下一个单词的词尾
  • b:跳转至当前或上一个单词的词首
  • #COMMAND 由#指定一次跳转的单词数

三、跳转

  • n+ 向下跳n行
  • n- 向上跳n行
  • nG 跳到行号为n的行
  • gg 跳转到文件头
  • shift + g 跳转到文件末尾
  • G 跳至文件的底部
  • :n 代表跳转到第n行,如:79 就跳转到第79行

四、设置行号

  • :set nu 显示行号
  • :set nonu 取消显示行号

五、翻屏

  • ctrl + f 下翻一屏
  • ctrl + b 上翻一屏
  • ctrl + d 下翻半屏
  • ctrl + u 上翻半屏
  • ctrl + e 向下滚动一行
  • ctrl + y 向上滚动一行

六、插入

  • a 在当前光标位置的右边添加文本
  • i 在当前光标位置的左边添加文本
  • A 在当前行的末尾位置添加文本
  • I 在当前行的开始处添加文本(非空字符的行首)
  • O 在当前行的上面新建一行 OR shift + o
  • o 在当前行的下面新建一行
  • R 替换(覆盖)当前光标位置及后面的若干文本
  • J 合并光标所在行及下一行为一行(依然在命令模式)

七、删除、恢复

  • x 删除当前字符
  • nx 删除从光标开始的n个字符
  • dd 删除当行
  • ndd 向下删除当前行在内的n行
  • dw 从光标当前的位置开始删除,直到删到单词最后
  • daw deletea a word 删除一整个单词
  • u 撤销上一步操作
  • ctrl + r 恢复上一步被撤销的操作
  • U 撤销对当前行的所有操作
  • df + 单个字符 可以快速删除当前光标到字符之间所有字符

7.1、跨行多字符删除

  • v (visual)模式,jkhl 跨行选中字符
  • shift + 4/6 光标到行尾/首
  • d 删除

八、查找

  • 光标停留在单词字母上,输入 shift + * 可快速选中该单词,通过n或者N进行上一个或下一个的匹配
  • shift+4/6 行首/尾
  • shift+{/} 代码块首/尾

九、复制/粘贴

9.1、基本复制

  • yy 将当前行复制到缓冲区,也可以用 ‘ayy’ 复制,a 为缓冲区,a 也可以替换为a到z的任意字母,可以完成多个复制任务
  • nyy 将当前行向下n行复制到缓冲区,也可以用 “anyy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务
  • yw 复制从光标开始到词尾的字符
  • nyw 复制从光标开始的 n 个单词
  • y^ 复制从光标到行首的内容
  • y$ 复制从光标到行尾的内容
  • p 粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用”ap 进行粘贴
  • P 粘贴剪切板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用”aP 进行粘贴
  • v 进入待处理,yy 复制,p 粘贴
  • v 进入待处理,shift + 4 行尾 选中行内容进行复制;shift + 6 行首 选中行内容进行复制

9.2、复制列

  1. ctrl+ v 按列选
  2. jk 选中多列
  3. 大A(shift+a)向后修改;shift+i(或者大写I)向前修改;d 删除列
  4. esc 退出

9.3、全选

  1. ggvG 全选
  2. shift + v 或者 V 可以快速选中一行
  3. gv 回到之前选中的文本块

9.4、选择一个单词

快速选中一个单词,按 v 按 e 即可

十、替换

表达式:[range]s/from/to/[flags]

  • :s/old/new 用 new 替换行中首次出现的 old
  • :s/old/new/g 用 new 替换行中所有的 old
  • :n,m s/old/new/g 用 new 替换从 n 到 m 行里所有的 old
  • :%s/old/new/g 用 new 替换当前文件里所有的 old

10.1、替换例子

  1. :1,10s/from/to/ 表示在第 1 到第 10 行(包含第1,第10行)之间搜索替换;
  2. :10s/from/to/ 表示只在第 10 行搜索替换;
  3. :%s/from/to/ 表示在所有行中搜索替换;
  4. 1,$s/from/to/ 同上

十一、搜索

  • /vpser //向光标下搜索 vpser 字符串,vpser 可以是正则表达式
  • ?vpser //向光标上搜索 vpser 字符串
  • n //向下搜索前一个搜素动作
  • N //向上搜索前一个搜索动作
  • *(#) //当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.
  • g*(g#) //此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串.
  • ^search 要查找仅出现在行首的 search
  • search$ 要查找仅出现在行尾的 search

其中:在搜索单词后面紧跟 \c 可以忽略大小写搜索。

或者:set ignorecase smartcase 设置即可。

十二、编辑其他文件

  • :e otherfilename 编辑文件名为 otherfilename 的文件

十三、修改文件格式

  • :set fileformat=unix 将文件修改为 unix 格式,如 win 下面的文本文件在linux下会出现^M

十四、查找帮助

当你不知道怎么处理时,直接输入 help 可以看到帮助文档的起点,ZZ 是退出或者:q,不建议使用
查找关于某个字母的命令 :help x 查找关于 x 的命令。

参考

都看到这了,不打赏下?您的支持将鼓励我继续创作!:)