2014-08-28 51 views

回答

1

看看插件SnipMateUltiSnips

它們提供了您想要的功能。你創建一個名爲filetype.snippets的文件(因此如果你想爲Perl創建片段,你可以使用perl.snippets)。然後,你可以從那裏定義你的片斷:

例如,在java.snippets我有下面的代碼片段:

snippet println 
    System.out.println(${0}); 

現在,每當我鍵入的println然後按Tab(我用snipmate,不知道ultisnips是同樣的按鍵綁定),它擴展爲

System.out.println(*Cursor here*); 

${0}定義製表位,所以你可以跳轉到參數或諸如此類的東西。

此外,還有一大堆預定義的片段可供下載here(如果使用病原體,只需將snippets文件夾放入您的包文件夾中)。他們爲snipmate和ultisnips工作。

你一個例子片斷是:

snippet subflowclass 
    package foo; 

    sub ${1:new} { 

    } 

    sub ${2:test} { 

    } 

    sub ${3:abc} { 

    } 

    1; 

${n:name}符號表示把一個製表位有(一個地方,用戶可以跳轉到按Tab鍵),並給它的name默認值。

+0

扎克,你真棒。你讓我今天一整天都感覺很好。謝謝你:) – user135538 2014-08-28 19:29:01

+0

沒問題,我很高興我能夠幫助你! – Zach 2014-08-28 20:26:44

3

如果您不想處理插件,則可以按<Ctrl-v><Enter>將字面換行符放入您的映射中。這些文件在寫入時不會顯示爲換行符(例如在vimrc中),但在使用縮寫時將被視爲常規換行符。

因此,例如縮寫

ab subflowclass package foo;^M^Msub new {^M^M}^M^Msub test {^M^M}^M^Msub abc {^M^M}^M^M1; 

將擴大到您所需的文本。 (我在^M寫到這裏,因爲這是它是如何通過Vim的顯示,但這些都應該通過鍵入<Ctrl-v><Enter>代替)

編輯:正如Peter Rincker in the comments指出,其實這是沒有必要的(雖然這個想法仍然有用其他情況)。你可以插入<CR>,當使用縮寫時,它也將被替換爲換行符。

+0

哦。從來不知道這一點。非常感謝resueman。這將非常有幫助 – user135538 2014-08-28 19:32:10

+0

縮寫採用與映射相同的鍵碼。例如。 'ab foo foo bar' – 2014-08-29 01:12:48

+0

謝謝。 工作:) – user135538 2014-08-30 10:06:27