我知道如何使用vim为我的所有文件突出显示过去的80个字符,使用我的vimrc中的以下内容:
if exists('+colorcolumn')
set colorcolumn=80
else
au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif
但有没有办法将其应用于某些文件名?我对autocmd有点熟悉,但我似乎无法使它工作。我不希望它应用于文件TYPES,而只是应用于某个文件名。感谢。
答案 0 :(得分:1)
您实际已经使用的自动命令机制正是您所需要的。您的au
行是自动命令,基本格式有3个参数:
事件 - 在您的情况下为BufWinEnter
,这意味着它将在窗口中显示缓冲区后运行,
模式 - 在您的情况下为*
,意味着它将匹配所有文件名,
命令 - 这里要重新输入它,但是如果文件名与模式匹配,则它是一个将在事件上运行的命令/ EM>
因此,您实际需要的是将*
更改为正确的模式(请参阅:h autocmd-patterns
),例如*.txt
,以匹配所有扩展名为.txt
的文件。
由于仅在未启用+colorcolumn
功能的情况下使用auto命令,因此您还应将其更改为auto命令。由于colorcolumn
是每个窗口,而不是每个缓冲区设置,遗憾的是这并不容易,并且涉及保存和恢复最后一个值。类似的东西:
:au BufWinEnter *.txt set colorcolumn=80
:au BufWinEnter *.txt let w:lastcc=&colorcolumn
:au BufWinLeave *.txt let colorcolumn=w:lastcc
这些都是简单的例子,取决于你的成功程度。您还可以考虑要使用哪个事件(例如将所有这些包装在函数内部并使用函数调用作为命令)。
答案 1 :(得分:0)
这个对我有用:
augroup collumnLimit
autocmd!
autocmd BufRead,BufEnter YourFileNameHere
\ highlight CollumnLimit ctermbg=Red guibg=Red
let collumnLimit = 79
let pattern =
\ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
autocmd BufRead,BufEnter YourFileNameHere
\ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END