我目前正在使用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:
所以我正在寻找一种方法来阻止它在编辑器的第一个空行之前包装任何东西?有什么想法吗?
答案 0 :(得分:5)
首先,您不需要在.muttrc
中明确设置您的设置,因为Vim会自动识别mutt邮件并设置专门用Vim编写邮件的设置,您只需创建一个文件{{1} (创建目录,如果它们不存在)并将你的节目放在那里:
$HOME/.vim/ftplugin/mail.vim
您需要在Vim中明确启用文件类型插件,以启用此功能,例如:您的setl tw=76
setl fo+=aw
需要包含.vimrc
或类似内容。
为了确保这些格式选项仅在编写邮件正文时(因为我在mutt中有filetype plugin on
),我编写了一个自动命令,专门检查你所在的区域和应用某些设置,如果您在标题或补丁或签名区域中,...
我已经更详细地写了here。您可能还对该页面上的其他设置感兴趣。
答案 1 :(得分:1)
两个想法:使用内置功能,您可以另外尝试:set fo+=w
。然后,尾随空格表示段落继续。如果您在标题中留下尾随空格,但将其添加到其他位置(在电子邮件正文中),则可能有效。
或者,有些插件可以根据您在缓冲区中的位置运行操作。 The hookcursormoved plugin有 linechanged 条件,您可以在第一(标题)行:set fo-=a
和:set fo+=a
其他地方:autocmd CursorMoved,CursorMovedI * if line('.') < 8 | set fo-=a | else | set fo+=a | endif
。或者查看我的OnSyntaxChange plugin,它可以根据语法组执行此操作。但是,对于特定用途,您也可以自己编写代码,基本上使用
{{1}}