Vim 键位整理

如果你是初学者,我是不建议你直接看这一章节的,因为实在太多了,你会乱的。但是如果你已经用了很久 Vim,偶尔想看看以前没记牢的或者想看看哪些不知道的键位,一点一点翻以前的课程又会很浪费时间,所以我放出了这个章节,将所有的键位整理起来,以便查阅。

整理进度跟本书更新进度齐平。

  • <space> 空格键
  • <cr> 回车
  • <c-f> 表示 <ctrl>f 的组合键

写入、保存、退出

  1. :q[uit] " 退出
  2. :q! " 强制退出
  3. :w[rite] " 保存
  4. :w! " 强制保存,能不能保存成功取决于用户对文件的权限
  5. :w ! sudo tee % " 如果没有权限保存,试试这个命令
  6. ZZ " 两个大写的 Z,没有修改直接退出,有修改保存后退出
  7. :w newfilename " 另存为新文件
  8. :1, 10 w newfilename " 1 10 行的内容另存为新文件
  9. :1, 10 w >> filename " 将 1 到 10 行的内容另存为新文件
  10. :r filename " 将目标文件的内容追加到当前光标下一行
  11. :3 r filename " 将目标文件的内容追加到第 3 行一下
  12. :! ls " 暂时离开 Vim 查看当前目录的文件,回车后返回 Vim

光标移动

  1. h " 方向键 ←
  2. j " 方向键
  3. k " 方向键 ↑
  4. l " 方向键
  5. 0 " 移动到行首
  6. $ " 移动到行尾的回车符
  7. g_ " 移动到行尾最后一个非空字符
  8. gg " 移动到第一行
  9. G " 移动到最后一行"
  10. w " 移动到下一个单词开头
  11. e " 移动到单词的结尾
  12. b " 移动到单词的开头
  13. " 不常用
  14. nh " 向左移动 n 格,n 为数字
  15. nl " 向右移动 n
  16. nj " 向下移动 n 行
  17. nk " 向上移动 n
  18. n<space> " 向右移动 n 格,同 nl
  19. H " 移动到当前屏幕第一行的第一个字符
  20. M " 移动到当前屏幕中间行的第一个字符
  21. L " 移动到当前屏幕最后一行的第一个字符
  22. + " 移动到非空白字符的下一行
  23. - " 移动到非空白字符的上一行
  24. :n<cr> " 跳转到第 n 行

翻页

  1. <c-f> " 向下移动一页
  2. <c-d> " 向下移动半页
  3. <c-b> " 向上移动一页
  4. <c-u> " 向上移动半页

查找与替换

  1. /word " 从光标位置向下搜索 word 单词
  2. ?word " 从光标位置向上搜索 word 单词
  3. n " 英文字母 n,根据 / 或 ? 搜索的方向定位到下一个匹配目标
  4. N " n 相反,定位匹配目标
  5. :n1,n2s/word1/word2/g " n1, n2 表示数字,替换 n1 行到 n2 行的单词
  6. :1,$s/word1/word2/g " 全文替换,也可以写成 :%s/word1/word2/g
  7. :1,$s/word1/word2/gc " 全文替换,并出现确认提示

复制、粘贴、删除

  1. x " 向后删除一个字符
  2. nx " 向后删除 n 个字符
  3. X " 向前删除一个字符
  4. nX " 向前删除 n 个字符
  5. dd " 删除当前行
  6. ndd " 向下删除 n
  7. d1G / dgg " 删除第一行到当前行的数据
  8. dG " 删除当前行到最后一行的数据
  9. d$ " 删除当前字符到行尾
  10. D " 删除当前字符到行尾
  11. d0 " 从行首删除到当前字符
  12. yy " 复制当前行
  13. Y " 复制当前行
  14. nyy " 从当前行开始复制 n
  15. y1G / ygg " 从第一行复制到当前行
  16. yG " 从当前行复制到最后一行
  17. y0 " 从行首复制到当前字符
  18. y$ " 从当前字符复制到行尾
  19. p, P " 黏贴,p 黏贴到光标下一行,P 黏贴到光标上一行
  20. yyp " 复制并粘贴
  21. ddp " 删除并粘贴,相当于下移当前行
  22. "+y " 复制本文到系统剪切板
  23. "+p " 粘贴系统剪切板到 Vim(不会影响文本格式)

插入

  1. i " 在光标前进入 insert 模式
  2. I " 在当前行左边第一个非空字符前进入 insert 模式,类似其他编辑器的 <c-a> 快捷键
  3. a " 在光标后进入 insert 模式
  4. A " 在当前行右边第一个非空字符前进入 insert 模式,类似其他编辑器的 <c-e> 快捷键
  5. o " 在光标的下一行插入
  6. O " 在光标的上一行插入
  7. s " 删除当前字符,并进入 insert 模式
  8. S " 删除当前行,并进入插入模式
  9. vc " 删除当前字符,并进入 insert 模式
  10. cc " 删除当前行,并进入插入模式
  11. c0 " 删除光标位置到行首,并进入 insert 模式
  12. cg_ " 删除光标位置到行尾最后一个非空字符,并进入 insert 模式
  13. ce " 删除光标位置到单词末尾,并进入 insert 模式
  14. cw " 删除光标位置到单词末尾,并进入 insert 模式
  15. ciw " 删除当前单词,并进入 insert 模式
  16. cip " 删除整个段落,并进入 insert 模式
  17. ci( " 删除当前括号内的内容,并进入 insert 模式 适用于 ([{<'` 等所有成对的标签

撤销重做

  1. u " 撤销
  2. <c-r> " 重做
  3. . " 重复完成操作

替换

  1. r " 替换单个字符,自动返回 normal 模式
  2. R " 连续替换多个字符,手动 <esc> 返回 normal 模式

大小写

  1. ~ " 当前字符大小写反转
  2. g~~ " 正行字符大小写反转
  3. vu " 当前字符小写
  4. vU " 当前字符大写
  5. vU " 当前字符大写
  6. viwu " 当前字符小写
  7. viwU " 当前字符大写
  8. ggguG " 文本所有字符小写
  9. gggUG " 文本所有字符大写
  10. :%s/\<./\u&/g " 将所有单词首字母大写(需要使用 :nohls 去掉高亮)
  11. :%s/\<./\l&/g " 将所有单词首字母小写
  12. :%s/.*/\u& " 将每行第一个字母大写
  13. :%s/.*/\l& " 将每行第一个字母小写

多窗口操作

  1. :sp filename " 上下分割窗口
  2. :vs[p] filename " 左右分割窗口
  3. <c-w>h[j[k[l]]] " 根据方向键移动光标到该方向的窗口上
  4. <c-w>[N]> " N 位数字,可选,增加当前窗口 N 列宽"
  5. <c-w>[N]< " N 位数字,可选,减少当前窗口 N 列宽"
  6. <c-w>[N]+ " N 位数字,可选,增加当前窗口 N 行高"
  7. <c-w>[N]- " N 位数字,可选,减少当前窗口 N 行高"
  8. <c-w>= " 将所有窗口设置等宽高
  9. <c-w>[N]n " N 位数字,可选,打开一个新窗口 N 行高,默认为整个窗口的一半"
  10. <c-w>[N]s " N 位数字,可选,将当前窗口垂直分割为上下两个窗口展示"
  11. " 新窗口可以为 N 行高,默认为整个窗口的一半"
  12. " 类似于 :sp current_file"
  13. <c-w>[N]v " N 位数字,可选,将当前窗口水平分割为左右两个窗口展示"
  14. " 新窗口可以为 N 列宽,默认为整个窗口的一半"
  15. " 类似于 :vs current_file"
  16. <c-w>o " 关闭除当前窗口外的所有窗口
  17. <c-w>r " 顺时针转动窗口
  18. <c-w>R " 逆时针转动窗口
  19. <c-w>x " 对调左右或上下两个对应的窗口
  20. <c-w>q " 退出窗口
  21. :q " 退出窗口

多文件编辑

  1. vim file1 file2 " 同时打开两个文件
  2. :files " 查看现在编辑的文件列表,%a 代表正在操作哪个文件
  3. 1 %a "file1" line 1
  4. 2 "file2" line 0
  5. :n " 跳到下一个文件,这里的 n 就是字母
  6. :N " 跳到上一个文件

2018-04-17 发布