如何在Vim中显示垂直线以包裹线?

jen*_*fer 114 vim word-wrap

我有兴趣找到一种在Vim(而不是GVim)的第80列显示垂直线的方法.

我已经习惯了set wrap,但我只想展示一条垂直线,这样我就可以自己包裹长线了.

Unc*_*eiv 302

Vim 7.3中的新功能:

'colorcolumn'是以逗号分隔的屏幕列列表,用ColorColumn突出显示.用于对齐文本.将使屏幕重绘速度变慢.屏幕列可以是绝对数目,或前面有"+"或数字" - ",这是添加到或从"文本宽度"中减去.

来自文档的示例:

:set colorcolumn=+1        " highlight column after 'textwidth'
:set colorcolumn=+1,+2,+3  " highlight three columns after 'textwidth'
:highlight ColorColumn ctermbg=lightgrey guibg=lightgrey
Run Code Online (Sandbox Code Playgroud)

您也可以使用绝对数字:

:set colorcolumn=80
Run Code Online (Sandbox Code Playgroud)

  • 我带着明亮的,燃烧你的大脑红色......因为你知道......线长 (6认同)
  • 我认为这里需要注意的是,除非您在示例中手动设置颜色,否则颜色会由您的高亮颜色自动确定. (4认同)
  • 请注意,必须在任何“colorscheme”命令之后设置“highlight”设置,因为这会覆盖您的突出显示颜色。 (2认同)
  • 值得一提的是,当你打字时,`textwidth`也会导致 vim 换行。 (2认同)

Sam*_*Sam 15

编辑:对于Vim> = 7.3,请参阅下面的答案.

不幸的是,vim没有机制在列之后显示一条垂直线(就像TextMate一样).但是,您可以使用其他可视指示器来显示线条太长.

这是我使用的(你可以把它放在你的.vimrc):

nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr>
hi OverLength ctermbg=none cterm=none
match OverLength /\%>80v/
fun! s:LongLineHLToggle()
 if !exists('w:longlinehl')
  let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0)
  echo "Long lines highlighted"
 else
  call matchdelete(w:longlinehl)
  unl w:longlinehl
  echo "Long lines unhighlighted"
 endif
endfunction
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用<Leader>H切换超过80的列突出显示.


Bri*_*ian 11

还有另一种方式来通知长线.

突出显示OverLength ctermbg = red ctermfg = white guibg =#592929
匹配OverLength /\%81v.*/

Vim 80列布局问题


Pie*_*tte 6

我使用match ErrorMsg '\%>80v.\+'哪个会突出显示超过80个字符的红色.

我把这个命令放在我的python.vim和ruby.vim下的〜/ .vim/after/ftplugin /下.


mic*_*ael 5

这里有几个答案http://vim.wikia.com/wiki/Highlight_long_lines简单的自动命令

:au BufWinEnter * let w:m1=matchadd('Search', '\%<81v.\%>77v', -1)
:au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
Run Code Online (Sandbox Code Playgroud)