在任意宽度的窗口中,在Vim中80个字符的软包装

我想使用Vim的软包装function( :set wrap )来包装一些80个字符的代码,而不pipe我的实际窗口宽度。

我还没有find办法做到这一点 – 所有的软包装似乎都与窗口的宽度相关联

  • textwidthwrapmargin都是硬包装(他们在文件中插入换行符)
  • 垂直分割成多个窗口,并使用:vertical resize 80 (可能用:set breakat=允许在任何字符上打断)其中一种作品(即使有点骇人听闻),但在使用:set number作为行号占用可变数量的列(取决于文件长度),这些是80的一部分。

有没有办法在vim中做到这一点? 据其他消息来源称,这看起来并不乐观 。

现在我的近似是只有/^.\{80}\zs.\+作为我的默认search,所以至less突出显示。 我想为它添加一个:syntax项目,但是当它重叠其他语法项目时,这个项目被打破了,所以我放弃了这个想法。

你可以通过:set numberwidth=6设置一个很大的最小宽度,然后你可以:set columns=86或者调整你的窗口大小。 如果你编辑一个有一百万行的文件,你可能会遇到麻烦,但这不太可能。 你也是这样浪费6列屏幕房地产。 所以还是有各种各样的问题。

你可以使用像这里和这里所说的:match来突出显示第80列。

除此之外,我看不出有任何办法做到这一点。 似乎这将是一个不错的function。

我没有软包装的解决scheme,但是为了标记列,从Vim 7.3(2010-08-15发布)开始:set colorcolumn=80将高亮显示第:set colorcolumn=80列。颜色取决于您的语法文件。

查看Vim 80的列布局问题 , :h colorcolumn

尝试这个:

 set columns=80 autocmd VimResized * if (&columns > 80) | set columns=80 | endif set wrap set linebreak set showbreak=+++ 

您可以删除if (&columns > 80) | 如果你总是想要80列。

你尝试过'linebreak'吗?

  *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 'linebreak' 'lbr' boolean (default off) local to window {not in Vi} {not available when compiled without the |+linebreak| feature} If on Vim will wrap long lines at a character in 'breakat' rather than at the last character that fits on the screen. Unlike 'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, it only affects the way the file is displayed, not its contents. The value of 'showbreak' is used to put in front of wrapped lines. This option is not used when the 'wrap' option is off or 'list' is on. Note that <Tab> characters after an <EOL> are mostly not displayed with the right amount of white space.