2013-10-03 72 views
0

我目前正在使用VIM爲Mutt寫電子郵件,它工作得很好,但換行令我瘋狂。我現在設置文字換行,當我從muttrc文件中調用它時,就像這樣:VIM - 用於撰寫電子郵件的句子換行

-c 'set fo+=aw' -c 'set tw=76' 

這很好用,正是我所期待的。問題是我還用頭Mutt中,這樣,當我在寫郵件的標題是第一個在我的作家:

From: Name <[email protected]> 
To: 
Cc: 
Bcc: 
Subject: 
Reply-To: 

Message here 

的問題是,VIM現在包裝的一切,包括標題。當我去到主題行,如果我沒有輸入CC和BCC像包裝這樣:

Cc: Bcc: Subject: 

所以我在尋找一種方式來從第一空行前包裹什麼阻止它編輯?有任何想法嗎?

回答

4

首先,你並不需要顯式地設置您的設置在.muttrc,因爲Vim自動識別狗電子郵件和設置您的爲了Vim專門寫郵件設置,您只需創建一個文件$HOME/.vim/ftplugin/mail.vim(創建目錄,如果他們不存在),把你的seetings有:

setl tw=76 
setl fo+=aw 

您需要,但是明確地啓用Vim的文件類型插件,爲了實現這一點,例如您的.vimrc需要包含filetype plugin on或類似的。

爲了確保只考慮這些格式選項,在編寫郵件正文時(因爲我有set edit_headers在mutt中),我寫了一個自動命令,專門檢查您所在的區域並應用某些設置,如果你是在標題中,或在一個補丁或簽名區域,...

我已經寫了更詳細的here。您可能也對該頁面上的其他設置感興趣。

1

兩個想法:使用內置功能,您可以另外嘗試:set fo+=w。然後,尾隨空格表示段落繼續。如果你離開標題中的尾部空間,但將其添加到其他地方(在電子郵件正文中),那可能會起作用。

或者,有些插件可以根據您在緩衝區中的位置來運行操作。 The hookcursormoved pluginlinechanged的條件,在這裏你可以在第一個(header)行和:set fo+=a其他地方使用:set fo-=a。或者看看我的OnSyntaxChange plugin,這可以根據語法組來完成。但是,對於特定用途,你也可以這個代碼自己,基本上以

:autocmd CursorMoved,CursorMovedI * if line('.') < 8 | set fo-=a | else | set fo+=a | endif 
+0

有沒有辦法在調用Vim時在cli中加載插件?並禁止從cli不呼叫時的插件? – jfreak53

+0

是的,將腳本從'〜/ .vim/plugin/foo.vim'上移到一個目錄,並用'-c'runtime foo.vim''加載它。 –

相關問題