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

时间:2009-12-17 01:57:35

标签: vim textwrapping

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

我使用了set wrap,但我只想显示一条垂直线,这样我就可以自己包裹长线了。

5 个答案:

答案 0 :(得分:294)

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

您也可以使用绝对数字:

:set colorcolumn=80

答案 1 :(得分:15)

编辑:对于Vim> = 7.3,请参阅答案below

不幸的是,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

然后,您可以使用<Leader>H切换超过80的列。

答案 2 :(得分:11)

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

  

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

Vim 80 column layout concerns

答案 3 :(得分:6)

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

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

答案 4 :(得分:3)

这里有几个答案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)