自动套用格式:插入文字后自动换行


9

阅读help textwith和之后help fo-table,我希望当我设定

set textwidth=20  " for demonstration
set formatoptions=tcq

那么插入文本最终总会导致换行,但事实并非如此。包装只发生在光标之前(或之前)。而且,如果我粘贴,则根本不会包裹。

示例(Vim 7.4):

12345678901234567890
This is a long line

如果我点击A并开始输入,该行将自动换行。

但是,如果我点击02wi并键入“ still”,它不会自动换行:

12345678901234567890
This is still a long line

我必须输入另外7个字符,然后才能换行,然后问题在下一行继续:

12345678901234567890
This is still more <-- it wraps here
typing and again a long line

粘贴也不会触发换行:

12345678901234567890
This is a long line This text is pasted and not wrapped

我想我想要的是set fo+=a但仅适用于段落级别,而我不希望将一行的自动格式设置扩展到其他行。

还是我缺少选择?

要明确的是,启动后vim -u NONE,这是我键入的内容(较少的注释):

:set textwidth=20<CR>
:set formatoptions=tcq<CR>
iThis is a long line<ESC>
02wistill <ESC>                " no wrap happens, but I'd like it to
u
:let @r = "This text is pasted and not wrapped"<CR>
$"rp                           " no wrap happens, but I'd like it to

1
这对我来说似乎很好。我开始使用Vim是vim -u NONE为了防止加载vimrc文件。这样可以为您解决问题吗?您正在使用哪个Vim版本?
马丁·图尔诺伊

不,那没有帮助。Windows和Ubuntu上的Vim 7.4。
mgiuffrida

paste设置,不小心?试试:set paste?
Volker Siegel

@VolkerSiegel不,paste未设置。当paste设置没有包装发生在所有。
mgiuffrida

Answers:


2

我使用遇到了部分解决方案formatoptions=tcqaw。基本上,您仍然可以自动换行段落,但是当行中没有尾随空格时,段落就会结束,这适用于许多情况。

使用您的示例(稍作修改,请勿撤消,并使用“ <SPACE>This ...”),我得到以下结果:

This is still a long  
This is pasted and 
not wrapped
line
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.