为什么不是';这个vimrc命令对我有用吗?I';我试图突出显示超过80个字符的长行

为什么不是';这个vimrc命令对我有用吗?I';我试图突出显示超过80个字符的长行,vim,Vim,我在StackOverflow上找到了这个解决方案: 如果我在文件中键入一个长行,我希望突出显示超过80个字符限制的字符。很多人似乎认为这个解决方案工作得很好,但我在我的vimrc文件中有它,它的行为就像什么都没有改变一样。我的长线没有突出显示 highlight OverLength ctermbg=red ctermfg=white guibg=#592929 match OverLength /\%81v.\+/ 以下是我的整个.vimrc,不长,仅供参考: " You'll need

我在StackOverflow上找到了这个解决方案:

如果我在文件中键入一个长行,我希望突出显示超过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
“您需要将以下内容添加到~/.vimrc中,以便加载病原体
“好的。运行命令时,必须关闭文件类型检测,以便
“您需要将以下内容添加到~/.vimrc中,以便加载病原体
“首先执行它们:
“文件类型关闭
调用病原体#运行时_追加_所有_捆绑包()
调用病原体#helptags()
“打开文件类型
语法高亮
让mapleader=“,”
设g:CommandTMaxHeight=25
imap ii
地图O
地图o
设置guioptions-=T
设置guioptions-=r
高亮显示
突出显示超长字符MBG=红色字符MFG=白色图形=#592929
匹配超长/\%79v\+/
兼容模式
定尺
设定数
设置shellcmdflag=-ic
集合列表
设置扩展选项卡
设置tabstop=4
设置softtabstop=4
nmap-ddkP
nmap-ddp
vmap xkP`[V`]
vmap xp`[V`]
哎呀!BufWritePost vimrc源%
彩色粉笔

以下几点似乎对我有用:

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%79v.*/
这基本上与您将
\+
更改为
*
并使用不同的颜色时相同。因为某种原因,虽然改变你的路线对我不起作用。也许其中一个角色有问题

无论如何-从本帖复制:

我想这是我在处理我的vimrc时使用的一个,但作为补充,我已经放弃了突出显示那些超长线的想法,并决定在第81列使用垂直线。您可能想试试这个,看看您更喜欢哪一个:

" Highlight first oversize line
set colorcolumn=81
发件人:

这对我有效,而我以前的解决方案却不行。我不太清楚为什么,但页面上的另一位评论员在评论时给出了一个提示,关于不打开和关闭
augroup
行的解决方案,“这只适用于在任何给定缓冲区中打开的第一个文件”


现在,如果有人能解释为什么附加的开行和闭行可以解决任何给定缓冲区中的第一个文件问题,以及为什么这个问题首先存在,那么我会感到很有启发。

在我看来,使用
textwidth
colorcolumn
要干净得多。有关其功能的详细信息,请在帮助中查找它们

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

突出显示由
颜色列
突出显示组处理


您也可以将
colorcolumn
设置为81,不需要设置
textwidth
,但我也使用
textwidth
进行其他一些设置,因此无论如何都要设置它,这允许我更改
textwidth
并以最大宽度获得颜色。

我知道这是一篇非常古老的帖子,但我最近发现我的超长高亮显示停止工作(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的答案,只是为了澄清一下,以防其他人遇到类似的问题:)

如果您使用的是vim 7.3,您可以使用第二个答案(
set colorcolumn=80
)。您试过了吗?我使用的是7.3,但我不想突出显示整个列。我更喜欢我所描述的解决方案。@kgr-该更正已经包含在原始答案中,并经过编辑以反映它。原始版本和更正版本都建议使用
/\%81v.\+/
唯一的区别是我使用的是79而不是81。所以,是的,我想我已经试过了。@JonCrowell好的,我发现这是有效的,只是不适用于所有的文件类型。例如,for me适用于python源代码,但不适用于其他一些文件。。。试图找出原因。开始和结束行仅用于分组。它们不能解决缓冲区中的第一行问题。每行的“BufEnter”部分都有。谢谢!和你一样,我无法找到其他解决方案。我很惊讶它能奏效;事件名称应使用逗号而不是空格分隔。
augroup vimrc_autocmds
    autocmd BufEnter * highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
    autocmd filetype BufEnter * match OverLength /\%>79v.\+/
augroup END