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在哪,建議網上查吧,不同的作用域有不同的位置,我也不多說在哪了。

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