vim快速指南:
vim 使用技巧: 1、认识.命令 最理想的编辑模式:一次按键移动,一次编辑操作 .命令可以重复上一次的修改操作 在普通模式下: j切换到下一行 A切换到本行的行末,并进入插入模式 注意:一般情况下将j.两个命令联合使用是比较常见的选择 可能这里你觉得.命令并没有什么特别的地方,but“上一次的修改”其实是有很多含义滴 比如: 普通模式下: x命令表示删除当前行光标所在字符,下一次执行.命令则是删除当前光标字符操作 >G命令表示修改当前行到行末(>gg)的缩进层级,下一次执行.命令则是继续执行修改缩进层级;[此处好好感受下>G和>gg命令,其实就能感觉到.命令的作用区别] dd命令表示删除一行,下一次执行.命令则继续执行删除一行
插入模式下: 从进入插入模式[a|i|o|O等]的那一刻起,到结束插入[esc],vim会记录每一次按键操作,并形成一次修改 A命令在行末任意追加一个字符,并ESC退出,下一次执行.命令,将执行整个插入操作 应用实例: 在每一行末尾增加分号(;)[A命令进入末行并进入插入模式,输入;字符,并执行j.命令,在下一行进行追加分号(其实这里也可以使用$a代替A,不过就比较耗费键盘啦,其实更多的是消耗时间啦) 注意: 在vim中如果能使用复合键的,还是尽量使用复合键,不仅能提高效率,对于键盘以及手指的损耗,还是挺有帮助滴&*&。以下是vim中部分复合键的相关对应关系: C c$(cc是剪切一整行) s cl(剪切当前字符,并进入插入模式) S ^c I ^i A $a
身在江湖,有时候退是为了更好的进!让我们为了部落,为了联盟,后退吧。。。。德玛西亚 应用实例: 小技巧,替换一个字符的前后字符,可以先进行当前字符的删除操作,之后在重新编辑。 例如:需要在+号前后各加一个空格,这样可以先删除+,然后输出空格+空格,在使用.命令替换 var Andy = "method("+argu+","+argu2+")"----》 var foo = "method(" + argu + "," + argu2 + ")"; fa匹配一行中a字符所在的第一个位置;使用格式:f{char} ;匹配一行中第二个匹配字符的位置(和上一个f操作息息相关噢 ). ;命令会重复查找上一次f命令所查找的字符,同时,命令怎会向前查找f命令匹配的字符 执行命令:f+;s + ;';.';';.' 注意:f+匹配一行中第一个+号;s + 先剪切+字符,然后修改为空格+空格;';.'跳转到第二个匹配字符,并执行上一次修改操作 战争就是移动,改变,出击,谁能够快速做出决策,谁就是最终的胜利者! 让我们的编辑和修改操作都能在最大短时间进行移动和修改,这才是最佳的编辑方式! 一些常用的快捷移动和修改操作总结: 作用 操作 重复 回退 修改 {edit} . u 行内向后查找字符 f{char} ; , 全文查找下一匹配 /pattern n N
快不一定是最好的,谁能做大精确定位,谁就是最终的王者! vim中另外一个批量单键命令操作*,查找全文中全部光标所在单词,n跳转到下一个单词 cw剪切一个单词,并进入插入模式 需要注意的是:在英文文献中很多单词根据语境不通,从而表现的含义也是不相同的,因此在有文章进行批量替换的时候,需要注意下,那些单词可以进行替换,那些单词不可以进行替换, 因此在想要执行大批量替换的时候,需要注意下,是否可以直接使用:%s/char/char1/g命令去进行操作! 在需要对语义进行判断后进行修改的,最好还是不要图快,可以先使用*全文匹配单词,修改完成后依次执行n和.命令进行逐个替换! 注意:'.'命令一定是在光标所在位置的原子操作下生效的。也就是光标在那个位置,进行的修改操作才可以使用.命令
2.普通操作 普通模式下其他一些快捷键的操作: 根据光标位置不同,删除一个单词操作: 光标在最后:db命令,删除从光标起始位置到单词开头的内容,保留光标位置的当前字符(可以使用x命令再删除) 光标在首字母:b命令,将光标移动到单词的开头,dw删除一个单词 daw命令,删除整个单词 综合比较上面三个命令,第三个命令可以理解为一个原子操作,因此在包装修改命令的时候,是可以使用.命令记录删除整个单词操作的
技巧: 能够重复,就不要使用计数 尝试理解d2w,2dw以及dw.三者之间的区别。当删除更多的单词时候,我们是使用dnw还是dw加上n个.命令。对于准确性和回滚可操作性来说还是后者比较实用的 注意:使用次数的一个好处就是能够保留一个完整的、连贯的撤销历史记录。如果可以把需要修改的对象当做一个连贯的,认为是一个原子操作的话,那么使用计数还是比较方便的。(c3w)
dap命令,删除一段 gUap命令,将一段文字转换成大写(gu小写) gUaw命令,将一个单词转换成大写 g~命令,反转大小写 gu命令,转换为小写 gU命令,转换为大写 >增加缩进 <减少缩进 gg=G命令,自动缩进整个文件。(gg到首行,=G执行全文自动缩进)
插入模式: ctrl+w 删除一个单词 ctrl+u 删除至行首
可视模式: 需要注意的是,在可视模式下,很多命令和普通模式下的命令都是可以通用的! vi命令进入可视模式 viw进入可视模式,并高亮当前光标所在单词 c命令,剪切掉光标选中内容,并进入插入模式、 Vj高亮选中两行,>.缩进(vj>.连续缩进两行两次级别缩进) 写python时候比较实用些
命令行模式: 调用外部shell命令,命令行模式输入!command 单独调用一个shell,命令行模式输入!shell
vim 管理多个文件: 注意:vim中对多窗口的操作都是在ctrl+w的前提下 ctrl+w+v 拆分竖屏 ctrl+w+s 水平拆分 ctrl+w+h 切换到左边屏幕 ctrl+w+l 切换到右边屏幕 ctrl+w+c 关闭活动窗口(:close) ctrl+w+o 只保留活动窗口,关闭其他(:on)
#vim .vimrc set ts=4 sw=4 expandtab (设置tab宽度,tabstop=4 shiftwidth=4 expandindent空格代替制表符) set autoindent smartindent 设置自动缩进,为c程序提供自动缩进 set foldenable foldmethod=indent 打开折叠功能。(zi打开折叠,zm关闭折叠) nmap <c-n> :tabnext<cr> nmap <c-p> :tabprevious<cr> 代码补全 set completeopt=preview,menu 注意: manual 手工定义折叠 indent 更多的缩进表示更高级别的折叠 expr 用表达式来定义折叠 syntax 用语法高亮来定义折叠 diff 对没有更改的文本进行折叠 marker 对文中的标志折叠