把CapsLock映射成
每当写完一段有小停顿,习惯性按下CapsLock进入normal模式。
适应面向搜索编程的思想。我个人感觉vim快最重要的原因就是精准选择。而实现精准选择的必要途径就是搜索。搜索是vim的核心。
比如说你需要跳到下个函数,那直接/def。再比如需要跳到括号末,直接f)。终端中,刚输入完python eval.py device cuda data.batch_size 256,发现这行指令中的python要改成python3,可以 直接Fna3。又发现前面要加sudo,直接^isudo。总之一切精确修改都是通过搜索来完成的,这与我们不使用vim编程时搜索只用来查找代码有本质区别。上面它举的几个例子,我怎么都不会输入??
精确跳转+可视化模式 。掌握精确跳转后,结合v V ctrl+v 这三种可视化模式进行精确选择,配合cdyrp等指令,可以完成极其灵活的代码增删改查。到这一步你会发现vim对你编程速度的提高已经是革命性的了。
可以试试用^$移动到行首行末,用w移动到单词结尾,yyp复制粘贴当前行,gg跳到文件开头,G跳到文件结尾,gd跳到定义,/def跳到下个函数开始的地方。用cw修改当前单词,用cf.直接修改到下个.号。
终端中,输入vimtutor zh,可对vim进行练习
Vim快速移动光标至行首和行尾
1、 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。除此之外,也可以在命令模式中使用快捷键"^"(即Shift+6)或0(数字0)。
2、 如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷键"$"(Shift+4)。与快捷键"^"和0不同,快捷键"$"前可以加上数字表示移动的行数。例如使用"1$"表示当前行的行尾,"2$"表示当前行的下一行的行尾。
dd删除的行,可以通过p进行粘贴
光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。 h (左移) j (下行) k (上行) l (右移)
行尾和行首:
欲移动光标到行首,请按数字0或^ 欲移动光标到行尾,请按$。与快捷键"^"和0不同,快捷键$前可以加上数字表示移动的行数。 例如使用"1$"表示当前行的行尾,"2$"表示当前行的下一行的行尾。
文档头和文档尾:
CTRL-G 用于显示当前光标所在位置和文件状态信息。 G 用于将光标跳转至文件最后一行。 先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。 gg 用于将光标跳转至文件第一行。
括号:
如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。
删除:
删除类命令的格式是:d [number(数字)] motion [number] - 可以附加的数字,代表动作重复的次数 motion代表操作的动作,可以为: w - 从当前光标当前位置直到下一个单词起始处,包括单词间的空格。 e - 从当前光标当前位置直到单词末尾,不包括单词间的空格。 $ - 从当前光标当前位置直到当前行末。 举例如下: 1. 欲从当前光标删除至下一个单词,请输入:dw 2. 欲从当前光标删除至当前行末尾,请输入:d$ 3. 欲删除整行,请输入:dd 4. 欲重复一个动作,请在它前面加上一个数字,如d2w代表删除两个单词,再如2dd或d2d 删除两行代表删除两行 使用d删除掉的内容,可以通过p粘贴出来
修改:
更改类命令的格式是:c [number] motion。 c的参数和d一样的,比如 w 代表单词,$代表行末等等。
查找:
输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。 输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。 完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查 找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。 CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。【这个不太懂,它是什么样的跳转规则??】
替换:
在一行内替换头一个字符串 old 为新的字符串 new,请输入 :s/old/new 在一行内替换所有的字符串 old 为新的字符串 new,请输入 :s/old/new/g 将两行之间的所有的字符串 old 替换为新的字符串 new,请输入 :#,#s/old/new/g,如566,571s/old/new/g 在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g 进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc
其他:
在正常模式下删除光标所在位置的字符,请按: x 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字符即可。
欲退出 Vim 编辑器,请输入 <ESC> :q! <回车> 放弃所有改动。 或者输入 <ESC> :wq <回车> 保存改动。 欲插入或添加文本,请输入: i 在光标前插入文本 I 在行首插入文本 a 在光标后插入文本(最常用) A 在行尾插入文本 欲撤消以前的操作,请输入:u (小写的u) 欲撤消在一行中所做的改动,请输入:U (大写的U) 欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R