16

由于一个计划外的 MacBook 母板崩溃(我的紧急备份 Linux 机器无法运行 TextMate),我正在与我的内部 (g)vim 重新取得联系。总而言之,我对 vim 的效率和功能感到满意,但我对获得那种即使是愚蠢的 HTML 文本区域也毫不费力就能实现的自动换行感到羞愧。

考虑文本

Etiam ornare mollis 侵权。暂停 sed neque。纳拉姆在精英。暨社会空虚。

默认情况下,使用 80 个字符宽度的 vim 将其显示为

Etiam ornare mollis 侵权。暂停 sed neque。纳拉姆在精英。暨社会 nu
拉姆。

这种包装不关心空格,所以有时它只是将单词切成碎片(在这种情况下为 nullam)。当然,你可以打开自动换行,得到这个:

Etiam ornare mollis 侵权。暂停 sed neque。纳拉姆在精英。暨社会
努拉姆。

问题是 vim 在换行符处插入了一个换行符,这是我最想要的。换句话说,我希望文本在打开自动换行的情况下完全显示为 vim 显示的内容,但不插入换行符。(通过这种方式,它可以粘贴到 HTML 文本区域和电子邮件程序等其他地方。)

尽管付出了辛勤的努力,但网络搜索却毫无用处;我希望 StackOverflow 能在我的 Google-fu 失败的地方取得成功。

4

3 回答 3

19

要打开自动换行:

:set wrap
:set linebreak

复制和粘贴原始文本而不是任何填充适用于 gvim。但是,对于 xterm 中的 vim,它会在 EOL 处复制空格填充(尽管不是换行符)。我认为这应该有效,但它没有:

:set mouse=a
于 2009-01-22T01:21:41.607 回答
10

我发现很有帮助 - 就像一个魅力。

基本上我只是在我的 vimrc 中添加了这些行

" not to break on words
set formatoptions=1
set linebreak

" fixing up moving line by line in the paragraph
nnoremap j gj
nnoremap k gk
vnoremap j gj
vnoremap k gk
于 2010-09-21T05:46:19.567 回答
3

如果 vim 正在添加换行符(不仅仅是换行),那么你可能打开了 textwidth ...

:set textwidth=0
于 2009-01-22T01:41:03.907 回答