关于vim的简单设置以及使用技巧

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            对文中的标志折叠

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xcywt

关于 getsockname、getpeername和gethostname、gethostbyname

一、gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息。 gethostname:获取主机的名字 gethostbyna...

2005
来自专栏积累沉淀

Python快速学习第十天

11.1 打开文件 open函数用来打开文件,语法如下: open(name[, mode[, buffering]]) open函数使用一个文件名作为唯...

2136
来自专栏云计算教程系列

如何使用Grep

Grep是一个命令行实用程序,可以使用常见的正则表达式语法搜索和过滤文本。它无处不在,动词“to grep”已经成为“搜索”的同义词。它grep是一个有用的工具...

1133
来自专栏云瓣

Node.js编程之异步

异步操作 Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务。这导致Node大量采用异步操作(asynchronou...

3285
来自专栏余林丰

虚拟机类加载机制(2)——类加载器

《深入理解Java虚拟机》一书中将类的加载过程放到了类加载器前面一节,但在这里我想先讲“类加载器”。在上一篇类加载时机中我们用大量篇幅来讲解了类加载过程中的5个...

2126
来自专栏Python攻城狮

Python系统编程-进程1.进程1.多任务的引入2.多任务的概念

有很多的场景中的事情是同时进行的,比如开车的时候手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的;

913
来自专栏java工会

超全超简洁SSM知识点总结

20710
来自专栏行者常至

008.多线程-synchronized锁

为了解决线程安全问题, 我们的做法是:不要让多个线程同时对一个全局变量作写的操作。

982
来自专栏技术之路

名称空间

using 声明和using 编译指令 using 声明将特定的名称添加到它所属的声明区域中。 using std::cout; 将cout添加到声明区中,声明...

1857
来自专栏Python

django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用

创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime...

5458

扫码关注云+社区

领取腾讯云代金券