vim用了很久,但是娴熟度还不够,用小伙伴的话来说,就还是记事本水平。这把真得好好总结下。本文根据个人情况来总结,分几个阶段。
我目前很娴熟的
- i → Insert 模式,按 ESC 回到 Normal 模式.
- :wq → 存盘 + 退出 (:w 存盘, :q 退出)
- dd → 删除当前行,并把删除的行存到剪贴板里
- p → 粘贴剪贴板
- u → 撤销上次操作
- x → 删当前光标所在的一个字符。
- gg → 跳转到文本开头
- G → 跳转到文本结尾
- = → 指定范围内文本对齐
- set enc → 查看文本编码
- set fenc → 查看文件编码
- o → 在当前行后插入一个新行
- /pattern → 搜索 pattern 的字符串,如果搜索出多个匹配,可按n键到下一个,N键到上一个
- ctrl+d 向下移动
- ctrl+b 向上移动
我目前知道但不娴熟的
- O → 在当前行前插入一个新行
- 0 → 数字零,到行头
- ^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
- $ → 到本行行尾
- :x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)。ZZ和x用的较少
- N< command > → 重复某个命令N次
重要且不知道的
- a → 在光标后插入
- ctrl+r 和u这个操作相反,u是指undo,该命令是指 redo
- cw → 替换从光标所在位置后到一个单词结尾的字符
- :e path/to/file → 打开一个文件
- :saveas path/to/file → 另存为 path/to/file
- :bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件,配合:e来
- e和w,我的理解就是 e就是光标移到所有的单词末尾,w是光标移到所有的单词开头。
- % : 匹配括号移动,包括 (, {, [. (前提:你需要把光标先移到括号上)
- 字符* 和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
- y可以拥有各种组合。比如说ye:从当前位置拷贝到本单词的最后一个字符。 y$:从当前位置拷贝到本行的最后一个字符。
-
- . → (小数点) 可以重复上一次的命令
vim超能力
- 0 → 到行头
- ^ → 到本行的第一个非blank字符
- $ → 到行尾
- g_ → 到本行最后一个不是blank字符的位置。
- fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。
- t, → 到逗号前的第一个字符。逗号可以变成其它字符。
- 3fa → 在当前行查找第三个出现的a。
- F 和 T → 和 f 和 t 一样,只不过是相反方向。
- 输入一个词的开头,然后按 < C-p >或是< C-n >,自动补齐功能就出现了。
- :split → 创建分屏 (:vsplit创建垂直分屏)
- < C-w >< dir > : dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏。
- gu /gU 配合位置动词使用,比如说 guw-将整个单词变为小写 gggUG 将全文转化为大写。