【Linux】Vim

Posted by 西维蜀黍 on 2020-10-10, Last Modified on 2021-10-17

模式切换

  • iInsert 模式,按 ESC 回到 Normal 模式

各种插入模式

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

各种删除

  • dd → 删除当前行,并把删除的行存到剪贴板里
  • dG:删除从当前位置到文件结尾
    • 因此,gg + dG 就是清空整个文件的内容

光标移动

  • 0 → 数字零,到行头
  • ^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
  • $ → 到本行行尾
  • g_ → 到本行最后一个不是blank字符的位置。
  • gg:光标移动到文件首行
  • 100gg:跳转到第100行
  • G:跳转到最后一行

搜索

向下搜索

/sw :向下搜索 sw 字符串

  • 输入关键字后,按下回车
  • 如果搜索出多个匹配,按 n 键跳转到下一个搜索到的位置,按 N 键跳转到上一个搜索到的位置

向上搜索

?sw:向下搜索 sw 字符串

大小写敏感配置

Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:

" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase 

将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效。

查找和替换

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}

例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

拷贝/粘贴

  • P → 粘贴
  • yy → 拷贝当前行当行于 ddP

Undo/Redo

  • u → undo
  • Control-r:redo

打开/保存/退出/改变文件 (Buffer)

  • :e <path/to/file> → 打开一个文件
  • :w → 存盘
  • :saveas <path/to/file> → 另存为 <path/to/file>
  • :xZZ:wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
  • :q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
  • :bn:bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(陈皓注:我喜欢使用:n到下一个文件)

Reference