为什么这个vimrc命令不能为我工作?我正在尝试突出超过80个字符的长行

时间:2012-10-24 22:05:19

标签: vim

所以我在StackOverflow上找到了这个解决方案:Vim 80 column layout concerns

如果我在文件中输入一个长行,我希望突出显示超过80个字符的字符。很多人似乎认为这个解决方案工作正常,但我在我的vimrc文件中有它,它表现得好像什么都没有改变。我的长线没有突出显示。

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

作为参考,这是我的整个.vimrc,这不是很长:

" You'll need to add the following to your ~/.vimrc so that pathogen will be loaded
" properly. Filetype detection must be off when you run the commands so its best to
" You'll need to add the following to your ~/.vimrc so that pathogen will be loaded
" execute them first:
"filetype off
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
"filetype on

syntax on

let mapleader = ","
let g:CommandTMaxHeight=25
imap ii <Esc>

map <S-Enter> O<Esc>
map <CR> o<Esc>

set guioptions-=T
set guioptions-=r

set hlsearch
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%79v.\+/
set nocompatible
set ruler
set number
set shellcmdflag=-ic
set list
set expandtab
set tabstop=4
set softtabstop=4
nmap <C-k> ddkP
nmap <C-j> ddp
vmap <C-k> xkP`[V`]
vmap <C-j> xp`[V`]

au! BufWritePost vimrc source %
colorscheme vividchalk

4 个答案:

答案 0 :(得分:2)

来自:https://stackoverflow.com/a/10993757/1701170

augroup vimrc_autocmds
  autocmd BufEnter * highlight OverLength ctermbg=darkgrey guibg=#111111
  autocmd BufEnter * match OverLength /\%75v.*/
augroup END

这对我有用,而我之前的解决方案却没有。我不确定为什么,但页面上的另一位评论者在评论时提供了一个提示,关于没有打开和关闭augroup行的解决方案,“这仅适用于您在任何给定缓冲区中打开的第一个文件”

现在,如果有人能够解释为什么额外的开始和结束行解决了第一个文件在任何给定缓冲区问题,以及为什么首先存在这个问题,那么我会觉得开明。

答案 1 :(得分:1)

以下似乎对我有用:

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%79v.*/

\+更改为*和不同颜色的情况基本相同。出于某种原因,虽然改变你的线路并不适合我。也许其中一个角色出了问题?

无论如何 - 从这篇文章中复制:https://stackoverflow.com/a/395326/680238

我认为这是我在使用vimrc时所使用的那个,但作为旁注,我可能会补充说,我已经放弃了突出显示那些超长线的想法,并决定在第81列上有垂直线。你可能想尝试一下,看看你更喜欢哪一个:

" Highlight first oversize line
set colorcolumn=81

答案 2 :(得分:0)

在我看来,使用textwidthcolorcolumn会更加清晰。在帮助中查找它们的功能细节。

set textwidth=80
set colorcolumn=+1

这只突出显示超出80列的点,因此可能无法达到您的目标,但在我看来,如果您经常从不遵守限制的来源加载文件,则会更容易阅读。

突出显示由ColorColumn突出显示组处理。

您也可以将colorcolumn设置为81而不需要设置textwidth,但我也会使用textwidth来处理其他一些事情,所以无论如何都要设置它,这样就可以了我要更改textwidth,无论如何都要以最大宽度着色。

答案 3 :(得分:0)

我知道这是一篇过时的文章,但是最近我发现OverLength突出显示功能停止工作(Vim 8.1)。我的突出显示代码最初是:

augroup vimrc_autocmds
    autocmd BufEnter * highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
    autocmd filetype BufEnter * match OverLength /\%>79v.\+/
augroup END

我从第三行中删除了filetype,它又开始工作了。我不知道哪个版本会更改此行为,但是以前filetype确实适合我。

这几乎是Jonomono的答案,只是澄清了其他人遇到类似问题的可能性:)