vim输入大花括号({),自动补全并对齐

配置方法

在vimrc文件中配置如下按键映射:

inoremap { {}<Esc>i<CR><Esc>koi<Esc>j<C-S-v><S-%>=j<S-$>xa

效果如下:
在编辑代码的时候,输入{,便会自动补全右边的},并且自动对齐,光标换到下一行合适的地方,如图:
在这里插入图片描述
在这里插入图片描述
用vim编辑器,定义一个函数,在if(i>0)后面输入一个{,然后自动补全右边的},并且代码对齐,光标放在下一行的合适位置(有个白色竖点的那地方,可以直接编辑,不用按tab或空格再对齐)
好了。如果只需要这个配置的话,把上面的那行配置代码复制过去用就行了。下面我就说下这行代码什么意思,不关心可以跳过。

背景

我的系统是ubuntu,但是平常工作主要语言还是java,用的IDE是idea,一般是不用vim写代码的。平常vim也只是写些脚本(shell,或者python)。
但是吧最近在写些算法,想着用c写,c的轮子少,也直接,毕竟也是我的第一本语言。就一直用的vim作为编辑器,说真的确实比较痛苦,没vs爽是真的。(不是我装,就是想强制锻炼自己写这些东西)
定义一个函数,写个if else什么的后面需要跟对{},是更痛苦了。用ubuntu18,这个vim版本还不错,写c语言的时候会自动对齐的,所以,mind you,上面的配置不是针对这种场景:在ubuntu18的安装的版本很新的vim上写c语言用的。当然了,如果你定义的文件名不是.c后缀的话,vim自己也不会对齐,这个就可以用上了
扯远了~~~~
授人以鱼,不如授人以渔。我说下我怎么发现这个东西的。
事情来自今晚,源于我的好奇心。
平常用vim的操作,都是从书上看的,今晚一时好奇,想着man vim看一下,有没有平常书中不提到的,毕竟书上写的都太浅了。
我发现了新大陆:
在这里插入图片描述
在帮助文档最后面有个在线帮助,命令行模式输入:help,获取帮助信息:
在这里插入图片描述

这里有说明怎么用的。需要可以自己看下:
然后,最终我发现了个这:
在这里插入图片描述
map.txt,一直点进去看的时候,看到了说明和示例,试了下,很有意思。
但是我配置esc使用其它键映射的时候,不生效,在网上查资料的时候,看到了个自动补全,输入{,自动补全为{},可以少输入一次},让我有了个想法。
就让我写出了这行配置代码:

inoremap { {}<Esc>i<CR><Esc>koi<Esc>j<C-S-v><S-%>=j<S-$>xa

代码说明

我来解释下,这个配置就像文档说的,在某个模式下,按键做了个映射。
inoremap就是插入模式:
在这里插入图片描述
还有另外2种写法:imap和iunmap
然后定义按键{,后面的{}<Esc>i<CR><Esc>koi<Esc>j<C-S-v><S-%>=j<S-$>xa,就像当于在插入模式,按下{,实际是触发后面一列键的动作。
如下:
输入{},然后按下Esc进入命令模式,然后按下i进入编辑模式,光标此时在}符号上,<CR>就是回车。这时候,就相当于在{}中间按下回车,变成下面这样:
在这里插入图片描述
变成在这里插入图片描述
接下来再按下Esc<Esc>,进入命令模式,按下k,光标向上移动一行到{这里,然后按下o,在新的一行编辑,此时是编辑模式,这个时候按下i,没有别的意思,就是输入了一个i,也可以用其它字符替代,这个i最后是我用来定位光标的(花了好大会才想出的这个定位光标的方案)。这个时候大概是这个样子:
在这里插入图片描述
如果此时是一个if语句的{},那实际可能是这个样子:
在这里插入图片描述
可以看到实际这个代码是没有对齐的,接下来就是要对齐了。
然后的Esc<Esc>进入命令模式,输入j,光标下移一行,此时光标在i下面的}这里,然后的<C-S-v>是进入可视化块模式(如果你的快捷键不是这请调整,比如<C-v>没有shift键)。<S-%>是shift+%键,移动到匹配的括号处,也就是当前}对应的{的地方,此时光标在{这里。
此时是把{和}之间有3行内容选中了输入=对齐,效果如下:
在这里插入图片描述
已经对齐了。这个时候该字符i发挥作用了。
输入j光标移动到下一行,也是字符i的左边,然后输入shirf+$<S-\$>,光标移动到行尾,输入x,删除i字符,输入a进入编辑模式:
在这里插入图片描述
完美。
如果碰见这种代码呢,初始化一个数组:
在这里插入图片描述
不能一输入{,就自动回车对齐,这样还得再删。
然后想到了一种解决办法,对}作映射:

inoremap } {}<Esc>i

这样就解决了,我的配置如下:
在这里插入图片描述
看我选中3行,最后一行注释了。最后一行是我当时想着处理上面说的.c文件编辑,vim自动对齐的时候,自动补全{}。至于什么意思,前面说了这么多,这个一看也就明白了。
最后,看下效果,随便玩:
在这里插入图片描述
其实就是自己的按键顺序自动走了一遍,减少人力浪费,毕竟我也刚见这个配置,也了解的少(如定义函数),想不到更好玩的。
p.s. 如果不清楚vimrc在哪,建议网上查吧,不同的作用域有不同的位置,我也不多说在哪了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章