practical vim tips --- part 1

记录下自己感觉会用得到的命令。

Vim Tips from Practical Vim

Normal Mode

1.>G 从当前 行直到文件结束,增加缩进

2.A在当前行的末尾添加,如果想要多行行尾添加内容,如添加 ; 可以 A;<Esc>,然后j. 对后面的行执行同样的添加操作

3.f{char} 行内寻找 字符,; 执行上次的 f 命令,找到下一个; , 找到上一个。

4.&执行上一次的替换操作

5.* 搜索光标所在的词

9.daw 删除单词及与单词前面相邻的空格。

10.C-a 给数字加1,C-x给数字减1. 也可以在前面加数字,执行这个数次操作。

12.d{motion} 可通过:h operator查看完整列表。

Insert Mode

13.在Insert模式下修正,<C-h>==backspace 后退删除一个字符,<C-w>后退删除一个单词,<C-u>删除到行首。

14.<C-[> 切换到normal模式。可以将此映射为<Esc>

书上说的 是进入insert模式,在我的配置下不行。在跳转的时候 , 是进入退出。

15.从寄存器粘贴

  • K 查找光标所在单词的man页,J 连接当前行与下一行。
  • yt,, t{char}看tip49
  • <C-r>{register}<C-r><C-p>{register},更多参考 :h i_CTRL-R_CTRL-P Tip62

16.<C-r>=做运算,将结果插入

17.插入特殊字符,<C-v>{code} or <C-v>u{code} 如 u00bf :h i_CTRL-V_digit, 要查找unicode编码。

18.插入特殊字符<C-k>{char1}{char2} 可以查看特殊字符的编码:h digraphs-table

我的<C-k> 不起作用。

Visual Mode

20.<C-g>在visual与select间切换,在visual下选中,如viw选中一个单词,再<C-g>切换到select,就可以直接输入替换到原来的单词了。select模式没什么用,只是更像其他文本编辑器一样,先选中再输入新内容。

23.gUitvitU it 是in tag,更多的text object后面还会有。

24.gv重新选择最后一次在visual下的选择。

Command-Line Mode

28.在命令行模式下. 表示光标所在的行,%当前文件的所有行。'<表示选择的第一行,'>表示选择的最后一行。1文件第一行,$文件最后一行,0在文件第一行之前不存在的一行,‘m包含标签m的行。

29.移动行 :[range]copy[== t ] {address}:[range] move[== m ] {address}

  • copy
    • :6t. 把第6行复制到当前行的下一行
    • :t6 把当前行复制到第6行下一行,即第7行
    • :t.复制当前行,即yyp
    • :t$ 复制当前行到文件 尾
    • '<,'>t0 复制所选的行到文件首
  • move 与copy类似

30.对于要在连续50行末尾添加 ; 如果再用2中的方法会很累的,要执行50次的j.

  • 可以先利用2中的方法A;<Esc>添加一行
  • 然后用V{line of number}<CR> 来选择要进行修改的行,其中{line of number}就是要选择的行数
  • 然后按 : 会进行:'<,'>, 接着输入 normal . ,回车执行添加操作
  • :normal命令,如:%normal A; 对整个文件的行执行添加; 这里的 % 代表整个文件,当执行这个特殊的normal命令时,vim会把光标移动行首,因此可以用:%normal i// 在行首添加注释符。

31.自动补全Ex命令,:**<c-d> 显示可能的列表。前选<tab>, <c-n>, <Right> 后选<s-tab>, <c-p>, <Left>

34.q: 打开历史命令(Ex 命令)窗口, q/ 打开历史搜索记录窗口,<c-f>从命令行模式切换到命令行窗口

67.对连续或非连续的行执行某个操作,如替换每行中的1.1)


1. one
2. two
3. three

最终结果:


1) one
2) two
3) three
  • qa 用寄存器a开始录制宏
  • 0f.r)w~ , 具体的替换过程
  • q 结束录制
  • jVG 选择要进行操作的行,可以用 30 中说过 的方法选择
  • 按 : 进行 :'<,'> 接着输入 normal @a 进行替换操作

这里用 normal命令进行操作,对非连续的行也可以,即如果其中有一行并没有 X. ,如果使用如5@a 这样的操作,如果中间有一处不能进行,后面的都会停止

其他的vim技巧

1.快捷键

  • A == $a 行尾进入 insert 模式
  • I == ^i 行首进入 insert 模式
  • C == c$ 从光标当前位置删除到行末,并进入 insert 模式
  • s == cl 删除光标所胡字符,进入 insert 模式
  • S == ^C 删除整行,进入 insert 模式

2.:h index 查看绑定的key。

不知道有没有插件来获取vim所有plugin绑定的键??

你可能感兴趣的:(practical vim tips --- part 1)