轉(zhuǎn):
如果你想在vim中當(dāng)輸入一個左大括號的時候,讓vim自動插入插入右大括號,并且回車換行,將光標置于下一行向右縮進4個空格(一個tab),就在.vimrc中配置:
imap { {}iV
上面有個前提就是你設(shè)置了
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
如果你只想讓你的vim完成標題中說的事情,到此已經(jīng)完成。但是如果你想了解上面的是什么樣的原理,那就繼續(xù)往下看,你會意外的收獲的。
imap是vim配置中的指令,就是做一個映射,語法就是
imap 要映射的東西 被映射成什么東西
按照這種理解,上面的那句就可以理解為:
映射“{”為
{}iV
后面的東西是什么就是vim中依次執(zhí)行這些操作,什么操作呢?我們一一分解;
{} 就是直接插入左右括號
? 就是按鍵盤的ESC鍵,切換到命令行模式
i ?按鍵盤的i鍵,進入插入模式
按回車,此時將右括號換行
? 就是按鍵盤的ESC鍵,切換到命令行模式
V 按住shift+v,就是選中當(dāng)前行就是有括號所在的行
< 按住shift+,將當(dāng)前行向右移動一個tab,此時有括號已經(jīng)和做括號對齊
O 按住shift +o,在當(dāng)前行(右括號)的前一行插入
也許你已經(jīng)了解了怎么回事,其實就是告訴vim如果我們輸入{ ,那就接下來做上面一系列操作。
當(dāng)你明白了這個原理,你就可以自己去創(chuàng)建一些映射來提高你的編程速度,就上面的映射提高了你9倍的速度啊。
另外以個你可能想到的映射就是小括號,目標是什么呢?當(dāng)我們插入左邊的小括號的時候,告訴vim插入右邊的小括號并且移動光標到括號中間并處于插入狀態(tài)。方法就是先去你的vim中試試你怎么做到,然后在你的.vimrc中把你剛才的操作想上面一樣做成一個映射??赡苣愕暮臀业牟灰粯拥?,我用了3步,你用了4步,還有人用了5步,但是都沒有問題,因為最后達到的效果都一樣??纯次业陌桑?/p>
imap ( ()i
上面是關(guān)于自動插入,但是如果你發(fā)現(xiàn)插入錯誤,想刪除插入的操作,需要刪除自動插入的所有的東西,這樣需要好幾個步驟,能不能刪除左邊括號就自動刪除后面自動插入的東西呢?能,但是有點麻煩,關(guān)于這部分,請參看:
http://colder.blog.163.com/blog/static/17394661820124201611732/
完。