和after/ftplugin/mail.vim

和after/ftplugin/mail.vim

每次我用 mutt 鍵入電子郵件時,它都會每隔 70 個字元左右插入這些換行符。我寧願它只依賴自動換行,因為我的編輯風格(大量修改)使重新格式化變得很痛苦。有沒有辦法在 muttrc 中設定?

答案1

您可以editor.muttrc選項中設定選項並包含命令列選項。命令列選項可以設定vim設定。一個例子是:

set editor="vim +':set textwidth=0' +':set wrapmargin=0' +':set wrap'"

或者

# use vim, tell it to set cursor on first line of body
set editor="vim -c 'set expandtab textwidth=65 | normal }j'"

等等等等。請參閱Vim 手冊頁更多選擇。

答案2

-S另一種方法是使用 vim 的cli 標誌為 mutt 指定一個額外的原始檔:

這是我的 .muttrc 中編輯器的值:

set editor="vim -S ~/.mutt/vimrc"

然後這是我的 ~/.mutt/vimrc:

set textwidth=0
set wrapmargin=0

答案3

嘗試將 textwidth 設為 0:

; ~/.vimrc
:set textwidth=0
:set wrapmargin=0

答案4

after/ftplugin/mail.vim

使用哈米甚唐納的解決方案在 Neovim 中使用了很長一段時間,今天我注意到在同一視窗中打開緩衝區(在我的例子中是我保存電子郵件地址的另一個文件)後,文字寬度會被重置。

我認為原因是/usr/share/nvim/runtime/ftplugin/mail.vim加載了預設文件類型插件,它將文字寬度設為72:

" Part of /usr/share/nvim/runtime/ftplugin/mail.vim

" many people recommend keeping e-mail messages 72 chars wide
if &tw == 0
  setlocal tw=72
endif

set editor="vim +':set textwidth=0' +':set wrapmargin=0' +':set wrap'"為了解決這個問題,我從 muttrc 中刪除了該行,而是創建了一個~/.config/nvim/after/ftplugin/mail.vim僅包含以下行的自訂檔案類型插件:

setlocal textwidth=0

通常, 中的檔案after/ftplugin/是在 中的配置之後取得的/usr/share/nvim/runtime/fpgplugin,從而有效地覆蓋它們。

我發現這也比該方法更乾淨一些set editor=,並且 Neovim 將為所有郵件類型的文件使用此配置。這使得在與 Mutt 以外的其他客戶端編寫郵件時可以保持一致的設定。

另外,我現在可以在多行上進行配置並添加註釋:

" Contents of ~/.config/nvim/after/ftplugin/mail.vim

setlocal textwidth=0
" Jump over first paragraph (useful when muttrc contains set edit_headers)
normal! }

相關內容