我發現了一些線程,但他們是3歲。有沒有人有一個插件推薦VIM,當我鍵入{
它會做:Vim插件幫助:自動插入結合中間光標的遊標
{
::cursor here::
}
另一個有用的東西是,如果我鍵入if
它會做:
if(::cursor here::)
感謝
我發現了一些線程,但他們是3歲。有沒有人有一個插件推薦VIM,當我鍵入{
它會做:Vim插件幫助:自動插入結合中間光標的遊標
{
::cursor here::
}
另一個有用的東西是,如果我鍵入if
它會做:
if(::cursor here::)
感謝
檢出snipMate插件。這是非常可定製的。有一個很好的screen-cast顯示插件的行動。
例如在C中使用snipMate插件。
if<Tab>
would produce:
if (::cursor:1::) {
::cursor:2::
}
首先<標籤>將光標停留在::光標:1 ::和第二<標籤>會帶你到::光標:2 ::。
snipMate中應該有一些與bash腳本相似的東西,如果不是這樣,添加一個非常簡單。
我用下面的代碼(PHP模板):
function! EatChar()
let l:char=getchar(0)
return ''
endfunction
inoreabbrev function_ function <ESC>maa()<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev if_ if (<ESC>maa)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev ifelse_ if (<ESC>maa)<CR>{<CR><CR>}<CR>else<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev for_ for (<ESC>maa; ;)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev foreach_ foreach (<ESC>maa as $key=>$value)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev while_ while (<ESC>maa)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev <? <?php <ESC>maa ?><ESC>`aa<C-O>:call EatChar()<CR>
This article顯示了一個簡單的解決方案,並鏈接到更強大的一些。
下面是從頁解決方案的一部分:
inoremap { {}<Left>
inoremap {<CR> {<CR>}<Esc>O
inoremap {{ {
inoremap {} {}
有很多插件和ftplugins,沒有工作。大多數時候,新手插件並沒有更好,因爲他們經常重新發明輪子而不考慮奇怪的情況。
在「舊」的東西,我有:
(*)映射/縮寫的膨脹防止了評論/串上下文中,提供了控制語句作爲C周圍幾個形式,並且也支持幾個文體選項(在C的情況下控制語句;它們很容易轉置爲其他語言)
我使用delimiteMate.vim。它以可配置和非煩人的方式處理這個問題。
如果你不需要各種文本片段插件的功能(或者只是不想弄清楚如何配置它以滿足你的需求),並且只有少數(一兩個)簡單模板,你可以只需記錄其創建並將其映射到快捷方式即可。
例如,
:nmap <leader>b o{<cr>}<esc>O
我好奇該插件(優選通用)。現在我曾經輸入'{} <^O> O'得到相同的效果 –
MBO
這與Bash有什麼關係? –