首页 > 代码库 > Vim学习与总结

Vim学习与总结

1.  :w 后面可以加文件名

2.  使用hjkl 来移动光标,当然你也可以使用箭头。j就是向下的箭头,k是向上,h向左, l向右

3.   :help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)

4.  cw替换从光标开始到一个单词结束的字符, cc替换光标所在行

5.  a 在光标后插入, i在光标前插入, o在光标所在行的下一行插入,O在光标所在行上一行插入, J 将光标所在行的下一行与光标所在行合并。

6.  0, 数字0, 移动到光标所在行的首部, $移动到光标所在行的尾部, ^移动到本行第一个不是空格的地方, g_ 移动到本行最后一个不是空格的地方。

7.  /pattern   搜索 pattern 的字符串(如果搜索出多个匹配,可按n键到下一个, 默认是先从光标所在行向上查找)

8.  p/P都可以黏贴,p是表示在当前位置之后,P表示在当前位置之前

9.    :e <path/to/file>  当正在编辑一个文件时,可以打开另外一个文件

10.   :saveas <path/to/file>   另存为 <path/to/file>相当于cp命令吧。

11.   :x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车), 

    :q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。

12. :bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。

13. . → (小数点) 可以重复上一次的命令

14. N<command> → 重复某个命令N次, 如2dd, 3p

  • 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”

15. :N 移动到第N行, G移动到最后一行, gg移动到第一行, w移动到下一个单词的开头,e移动到下一个单词的结尾

    如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成

    如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W

16. %  -> 匹配括号移动,包括 ({[. (你需要把光标先移到括号上)

    * 和 #  -> 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

17.  你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令都可以如下来干:

   <start position><command><end position>

  例如 0y$ 命令意味着:

  • 0 → 先到行头
  • y → 从这里开始拷贝
  • $ → 拷贝到本行最后一个字符
  • 你可可以输入 ye,从当前位置拷贝到本单词的最后一个字符。

    你也可以输入 y2/foo 来拷贝2个 “foo” 之间的字符串。

  • gU 变成大写, gu 变成小写

18. 

  • fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。
  • t, → 到逗号前的第一个字符。逗号可以变成其它字符。
  • 3fa → 在当前行查找第三个出现的a。
  • F 和 T → 和 f 和 t 一样,只不过是相反方向。
  • 还有一个很有用的命令是 dt" → 删除所有的内容,直到遇到双引号—— "

19.   区域选择 <action>a<object> 或 <action>i<object>

  在visual 模式下,这些命令很强大,其命令格式为

  <action>a<object> 和 <action>i<object>

  • action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
  • object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 ‘、 )、 }、 ]。

   假设你有一个字符串 (map (+) ("foo")).而光标键在第一个 的位置。

  • vi" → 会选择 foo.
  • va" → 会选择 "foo".
  • vi) → 会选择 "foo".
  • va) → 会选择("foo").
  • v2i) → 会选择 map (+) ("foo")
  • v2a) → 会选择 (map (+) ("foo"))
20.  块操作: <C-v>

块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]

    • ^ → 到行头
    • <C-v> → 开始块操作
    • <C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
    • I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。
自动提示: <C-n> 和 <C-p>

在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能就出现了……

如果继续按<c-p>是选择前一个匹配,而<c-n>是选择后一个匹配

宏录制: qa 操作序列 q@a@@
    • qa 把你的操作记录在寄存器 a。
    • 于是 @a 会replay被录制的宏。
    • @@ 是一个快捷键用来replay最新录制的宏。

示例

在一个只有一行且这一行只有“1”的文本中,键入如下命令:

    • qaYp<C-a>q@a → 在1下面写下 2
      • qa 开始录制
      • Yp 复制行.
      • <C-a> 增加1.
      • q 停止录制.
    • @@ → 在2 正面写下3
    • 现在做 100@@ 会创建新的100行,并把数据增加到 103.
可视化选择: v,V,<C-v>

前面,我们看到了 <C-v>的示例 (在Windows下应该是<C-q>),我们可以使用 v 和 V。一但被选好了,你可以做下面的事:

  • J → 把所有的行连接起来(变成一行)
  • < 或 > → 左右缩进
  • = → 自动给缩进 

在所有被选择的行后加上点东西:

  • <C-v>
  • 选中相关的行 (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
  • $ 到行最后
  • A, 输入字符串,按 ESC。

 

详细的解释请右键: Here