简明 VIM 攻略

简明 VIM 攻略

第一级

  • i → Insert 模式,按 ESC 回到 Normal 模式.
  • x → 删当前光标所在的一个字符。
  • :wq → 存盘 + 退出 (:w 存盘, :q 退出) (注::w 后可以跟文件名)
  • :x → 存盘 + 退出
  • dd → 剪切当前行
  • p → 粘贴剪贴板
  • hjkl (移动光标) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
  • :help → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(陈皓注:退出帮助需要输入:q)

第二级

各种插入模式
  • a → 在光标后插入
  • o → 在当前行后插入一个新行
  • O → 在当前行前插入一个新行
  • cw → 替换从光标所在位置后到一个单词结尾的字符
在当前行上移动光标
  • 0 → 数字零,到行头
  • ^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
  • $ → 到本行行尾
  • g_ → 到本行最后一个不是blank字符的位置。
  • /pattern → 搜索 pattern 的字符串(注:如果搜索出多个匹配,可按n键到下一个)
  • fa → 到下一个为a的字符处,fs到下一个为s的字符
  • t, → 到逗号前的第一个字符。逗号可以变成其它字符
  • 3fa → 在当前行查找第三个出现的a
  • FT → 和 f 和 t 一样,只不过是相反方向
  • dt" → 删除所有的内容,直到遇到双引号(双引号可以替换成其他字符,字母/符号/数字均可)
拷贝/粘贴

(注:p或P都可以,p是表示在当前位置之后,P表示在当前位置之前)

  • P → 粘贴
  • yy → 拷贝当前行当行于 ddP
  • 全部删除:按esc键后,先按gg(到达顶部),然后dG
  • 全部复制:按esc键后,先按gg,然后ggyG
  • 全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG
  • 单行复制:按esc键后, 然后yy
  • 单行删除:按esc键后, 然后dd
  • 粘贴:按esc键后, 然后p
撤销上一步操作
  • u → undo
打开/保存/退出/改变文件(Buffer)
  • :e <path/to/file> → 打开一个文件
  • :w → 存盘
  • :saveas <path/to/file> → 另存为 <path/to/file>
  • :xZZ:wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
  • :q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
  • :bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(注:用:n到下一个文件)

第三级

重复命令
  • . → (小数点) 可以重复上一次的命令
  • N → 重复某个命令N次
示例:
2dd → 删除2行
3p → 粘贴文本3次
100idesu [ESC] → 会写下 “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu “
. → 重复上一个命令—— 100 “desu “.
3. → 重复 3 次 “desu” (注意:不是 300,你看,VIM多聪明啊).
光标移动更有效率
  • NG:N → 到第 N 行
  • gg → 到第一行。(注:相当于1G,或 :1)
  • G → 到最后一行。
  • 按单词移动:(如果你认为单词以空格分开,则使用W或E,如果按默认方式分开,则用w或e)
    • w → 到下一个单词的开头
    • e → 到下一个单词的结尾
最强的光标移动
  • % : 匹配括号移动,包括 (, {, [. (注:你需要把光标先移到括号上)
  • *#: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

多个命令联合使用

很多命令都可以和移动光标的命令结合使用,可以这么干:

<start position><command><end position>

++例如++

0y$ 命令意味着:

  • 0 → 先到行头
  • y → 从这里开始拷贝
  • $ → 拷贝到本行最后一个字符

ye → 从当前位置拷贝到本单词的最后一个字符

y2/foo → 拷贝2个 “foo” 之间的字符串

其他操作

  • 分屏: :split 和 vsplit.
  • 可视化
  • 宏录制
  • 自动提示
  • 块操作
  • 区域选择

【参考】https://coolshell.cn/articles/5426.html

上一篇:快捷键+Dos命令


下一篇:软路由openwrt中替换国内镜像源(以阿里云为例)