跳转至

Linux vim编辑器

参考文章 Vim 练级攻略


快捷操作#

  1. 打开文件 vim fileName
  2. 打开多个文件 vim file1 file2 ...
  3. 打开新的文件 :open fileName
  4. 在新的窗口代开新的文件 split:fileName
  5. 上下切换文件(循环) :bp :bn
  6. 上下切换文件 :n :N
  7. 查看当前的文件列表 :args :files :ls
  8. 打开远程文件 :e ftp://192.168.10.76/sun.txt

插入命令#

  1. i 在当前位置插入
  2. I 在行首插入
  3. a 在当前位置后插入
  4. A 在当前行尾插入
  5. o 在当前行下一行插入一行
  6. O 在当前行上一行插入一行

查找和替换#

  1. /text 查找text,按n查找下一个,按N查找上一个
  2. ?text 反向查找text,按n查找上一个,按N查找下一个
  3. 查找特殊字符.*[]%/?~$的时候需要转意
  4. :set ignorecase 设置之后查找的时候忽略大小写
  5. set noignorecase 设置之后查找区分大小写
  6. 光标在打次上面的时候按#或者*进行查找,#相当与/ *相当与?
  7. :set hlsearch高亮显示所有查找到的结果
  8. :set nohlsearch高亮显示所有查找到的结果
  9. :nohlsearch关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
  10. :set incsearch逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
  11. :set wrapscan重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
  12. :start,ends/word/replace/g 替换从开始行到结束行匹配到的内容,不询问。
  13. :start,ends/word/replace/gc 替换从开始行到结束行的内容,询问。
  14. :1,$s/word/replace/g 替换从第一行到最后一行匹配到的内容。

删除、复制以及粘贴#

  1. x 向后删除一个字符.
  2. X 向前删除一个字符。
  3. dd 删除行,并把删除的保存在剪切板里.
  4. dte 删除光标到 e之前的字符。
  5. p 粘贴剪切板的内容到下一行.
  6. P 粘贴剪切板的内容到当前行.
  7. cw 替换从光标所在位置后到一个单词结尾的字符.
  8. yy 拷贝当前行.
  9. yw 复制当前单词。
  10. ye 复制当前光标到词尾的字符。
  11. y[0/$] 复制从光标到结尾/开头。
  12. u 撤销改动.
  13. CTRL+r 反撤销.
  14. J 把下一行和当前行拼接组成一行

光标移动#

  1. hjkl 左下上右.
  2. w/e : 移动到下一个单词的开头/结尾。
  3. 0 数字零,到行头.
  4. ^ 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等).
  5. $ 到本行行尾.
  6. g_ 到本行最后一个不是blank字符的位置.
  7. [f/F]a 本行的下一个/上一个 a 字符处。
  8. 3[f/F]a 光标后/前第三个 a 字符处。
  9. [t/T]a 本行的下一个或上一个 a 前或后。
  10. gg 移动到文件头
  11. nG 移动到文件的第n行
  12. G 移动到文件尾
  13. H 移动到当前屏幕内第一行的第一个字符
  14. M 移动到当前屏幕中间行的第一个字符
  15. L 移动到当前屏幕最后一行的第一个字符
  16. + 移动到下一行第一个字符。
  17. - 移动到上一行的第一个字符。
  18. ctrl + f\b\d\u (上\下)(一屏半屏)
  19. n + Space 向后移动 n 个字符
  20. (或) 移动到下\上一个空行处
  21. % : 在匹配的括号之间来回移动。
  22. */# : 当光标在单词上时,移动到下一个/上一个对应的单词。

区块选择#

  1. v 选择指定的字符
    • vi" : 选择被 " 包括的字符,不包含 "
    • v2i) : 选择第二层 ) 之间的字符。
    • va" : 选择被 " 包括的字符,包含 "
    • 注: " 可以替换成 w 单词, W 空格分割的单词, " ' ) } ]
  2. V 选择指定的行
  3. CTRL + v 区块选择
  4. y 复制选择的内容
  5. d 删除选择的内容,并把删除的内容复制到剪切板
  6. p 粘贴

    行前插入空格 :

    1. CTRL+V 进入多行编辑模式
    2. j k移动选中要编辑的行
    3. $ 跳到行位,选中所有行内容
    4. I 在行首插入空格
    5. ESC 完成

    行后插入:

    1. ctrl+v
    2. jk
    3. $
    4. A
    5. ESC

设置#

  1. 显示行号 set nu
  2. 不显示行号 set nonujj

split 切割窗口#

  1. :sp 再打开一份当前文件
  2. :split fileName 在当前窗口打开指定文件
  3. ctrl + w + w 在打开的文件之间切换
  4. ctrl + w + hjkl 在文件中左右切换
  5. :close 关闭光标所在文件
  6. :only 关闭其他窗口
  7. nsplit fileName 指定打开窗口大小 n
  8. nCTRL+w + + 放大窗口,n可以不指定
  9. nCTRL+w + - 缩小窗口,n可以不指定
  10. ctrl + w + —— 上下最大化窗口
  11. ctrl + w + | 左右最大化窗口
  12. vsplit fileName 垂直分割
  13. CTRL + W + h\j\k\l 在窗口之间跳转
  14. CTRL + W + H\J\K\L 把窗口移动到最左\上\下\右
  15. :qall 关闭所有
  16. :wall 保存所有

编辑提示#

  1. ctrl+n/ctrl+p 提示输入单词,多次按下上下切换。
  2. ctrl+x + ctrl+n 根据当前文档内容进行提示。
  3. ctrl+x + ctrl+f 根据当前目录下的文件名进行提示。
  4. ctrl+x + ctrl+o 根据语法进行提示,注意文件扩展名。
  5. ctrl+x + ctrl+l 行自动补齐,当前行的前两个单词和已经存在行的前两个单词相同,则自动补全行。

文件浏览#

  1. :E [path] : 打开文件目录,path 为可选项。

    • - 上级目录
    • R 重命名文件
    • D 删除文件
    • s 排序文件
    • :bn 下一个文件
    • :bp 上一个文件
    • :bf 第一个文件
    • :bl 最后一个文件
    • :ls 查看已经打开的文件列表,每个文件有一个编号
      • - 非活动的缓冲区
      • a 当前激活的缓冲区
      • h 隐藏的缓冲区
      • % 当前缓冲区
      • # 交换缓冲区
      • = 只读缓冲区
      • + 已经修改的缓冲区
    • :buffer n 切换到 :ls 显示的对应文件
    • buffer path 切换到对应文件,支持自动补全
    • :set scb 同步滚动分屏里的文件
    • :set scb! 取消同步滚动
    • :He 在下方分屏浏览文件
    • :He! 在下方分屏浏览文件
    • :Ve 在左边分屏浏览文件
    • :Ve! 在右边分屏浏览文件
    • vim -p file1 file2 ... 用tab页的方式打开问价
    • bufdo tab split 把buffer中的文件用tab页打开
    • Te Tab页浏览目录
      • gt 下一个tab
      • gT 上一个tab
      • igt 第i个tab
      • :tabs 查看tab页下面打开的文件
      • :tabclose 关闭当前tab页
      • :tabclose i 关闭第i个tab页
    • :mksession ~/.mysession.vim 保存会话到文件
    • vim -S ~/.mysession.vim 打开会话文件
    • qa 退出全部文件
    • wqa 保存并退出全部文件

单词大小写替换#

  1. gu 转换为小写。

    • guw 转换当前光标到词尾。
    • gu3w 转换当前光标开始的三个单词。
    • gu$ 转换当前光标到行尾。
    • gu0 转换当前光标到行首。
    • guG 转换当前光标到文章尾部。
  2. gU 转换为大写。

录制宏#

  • qa : 开始录制名字为 a 的宏。
  • q : 结束宏录制。
  • @@ : 执行最近录制的宏。
  • @a : 执行录制的宏 a

  • 100@a : 执行录制的宏 a 100 遍。

    生成数字1到100: 在只有一个数字1的文本总执行下面命令: qa Yp ctrl+a q 99@a

可视化选择#

  • ctrl+v: 选中之后可以输入下面的指令。
    • J:连接选择的行。
    • ``:左右缩进。
    • =:自动缩进。