Vim使用技巧

基本技巧

  1. 各种插入模式

    • a 在光标后插入
    • o 在当前行后插入新行
    • O 在当前行前插入新行
    • cw 删除当前光标到单词的结尾
  2. 简单移动光标

    • 0 移动光标到行头
    • ^ 到本行第一个不是blank字符的位置
    • $ 到行末
    • g_ 到本行第一个不是blank字符的位置
    • /pattern 搜索pattern的字符串
  3. 拷贝/粘贴

    • p 粘贴
    • yy 拷贝当前行
  4. Undo/Redo

    • u undo
    • ctrl+r redo
  5. 打开/保存/退出/改变文件

    • :e <path/to/file> 打开一个文件
    • :w 存盘
    • :saveas <path/to/file> 另存为<path/to/file> ,这个功能很实用,在不需要cp的情况下可以直接打开文件另存为则可以得到新的文件
    • :x,ZZ或:wq 保存并退出(:x 表示仅在需要时保存,ZZ不需要输入冒号并回车即可保存并退出)
    • :q! 退出不保存
    • :qa! 强行退出所有的正在编辑的文件
    • :bn和:bp 可以同时打开很多个文件,使用这两个命令来切换下一个或上一个文件

进阶技巧

  1. 命令的重复执行

    • .(小数点) 重复上一次的命令
    • N<command> 重复某个命令N次
    • 2dd 删除2两行
  2. 高效地移动光标

    • NG 光标到第N行,或者也可以:N
    • gg 到第一行
    • G 到最后一行
    • w 到下一个单词的开头
    • e 到下一个单词的结尾
      如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成
      如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W
    • % 匹配括号移动,包括(,{,[ 如果直接在行上按%会自动找到括号
    • * 匹配光标当前所在的单词,移动光标到下一个匹配的单词
    • # 匹配光标当前所在的单词,移动光标到上一个匹配的单词
  3. 大小写转换

    • gU 变大写
    • gu 变小写
    • shift+v gU 将当前行变为大写
    • shift+v gu 将当前行变为小写
  4. 将文本内容全部删除

    • gg–>d–>G
      解释一下:gg先跳到文本第一行,d表示删除,G表示跳到文本最后一行,组合起来表示删除文本的第一行到最后一行,即文本内容全部删除。
  5. 在当前行上移动光标

    • fa 到下一个为a的字符处,你也可以fs到下一个为s的字符
    • t, 到逗号前的第一个字符。逗号可以变成其它字符
    • 3fa 在当前行查找第三个出现的a
    • F和T 和f和t一样,只不过是相反方向
    • dt” 删除所有内容,直到遇到引号
  6. 块操作:ctrl+v

    块操作可以说是最实用的技巧了,典型的操作:ctrl+v–>ctrl+d–>I–>[ESC]

    • 0 到行头
    • ctrl+v 开始块操作
    • ctrl+d 向下移动(你也可以使用hjkl来移动光标,或是使用%,或是别的)
    • I-- [ESC] I是插入,插入“–”,按ESC键来为每一行生效

    1.给选中的行前面添加#字符

    • 按下ctrl+v
    • 按光标移动键选中行
    • 输入大写的I
    • 输入字符#
    • [ESC]使得每一行生效

    2.给选中的行后面面添加#字符

    • 按下ctrl+v
    • 按光标移动键选中行(可以配合$符号操作)
    • 输入大写的A
    • 输入字符#
    • [ESC]使得每一行生效
  7. 自动提示

    在Insert模式下,可以输入一个词的开头,然后按ctrl+p或者ctrl+n
    自动补全功能就出现了

  8. 可视化选择

    使用ctrl+v或者shift+v选中后,可以进行如下操作:

    • J 把选中的行连接起来(变成一行)
    • <> 左右缩进
    • =自动缩进