1

我目前正在使用 VIM 为 Mutt 写电子邮件,效果很好,但自动换行让我发疯。当我从 muttrc 文件中调用它时,我目前设置了自动换行,如下所示:

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

这很完美,正是我想要的。问题是我也在 mutt 中使用了标题,所以当我写一封电子邮件时,标题在我的作家中是第一位的:

From: Name <me@me.com>
To: 
Cc: 
Bcc: 
Subject: 
Reply-To: 

Message here

问题是 VIM 现在正在包装所有内容,包括标题。如果我没有输入 CC 并且 BCC 会像这样换行,那么当我转到主题行时:

Cc: Bcc: Subject:

所以我正在寻找一种方法来阻止它在编辑器的第一个空行之前包装任何东西?有任何想法吗?

4

2 回答 2

5

首先,您不需要在 .xml 中显式设置您的设置.muttrc,因为 Vim 会自动识别 mutt 邮件并设置您的设置以专门使用 Vim 编写邮件,您只需创建一个文件$HOME/.vim/ftplugin/mail.vim(创建目录,如果它们不存在)和把你的座位放在那里:

setl tw=76
setl fo+=aw

但是,您需要在 Vim 中显式启用文件类型插件才能启用此功能,例如您.vimrc需要包含filetype plugin on或类似的。

为了确保仅考虑这些格式选项,在编写邮件正文时(就像我set edit_headers在 mutt 中所做的那样),我编写了一个自动命令,专门检查您所在的区域并应用某些设置,如果您在标题或补丁或签名区域,...

我在这里更详细地写了这个。您可能还对该页面上的其他设置感兴趣。

于 2013-10-04T07:21:29.580 回答
1

两个想法:内置功能,你可以:set fo+=w额外尝试。然后,尾随空格表示段落继续。如果您在标题中留下尾随空格,但将其添加到其他地方(在电子邮件正文中),那可能会起作用。

或者,有些插件可以根据您在缓冲区中的位置运行操作。hookcursormoved 插件有一个换行条件,你可以:set fo-=a在第一(标题)行和:set fo+=a其他地方。或者看看我的OnSyntaxChange 插件,它可以根据语法组执行此操作。但是,对于特定用途,您也可以自己编写代码,基本上使用

:autocmd CursorMoved,CursorMovedI * if line('.') < 8 | set fo-=a | else | set fo+=a | endif
于 2013-10-03T18:38:46.617 回答