语法高亮工程顺顺当当美丽的标准类型,如int,uint32_t,float等等.但是,我想教vim在我的代码中使用typedef定义的其他类型,例如
typedef double float64_t;
Run Code Online (Sandbox Code Playgroud)
如何让vim使用与float64_t标准类型相同的突出显示?具有本地文件(例如,在我的~/.vimrc或.vim目录中)的解决方案将是优选的.自动解析typedef名称不是必需的,我愿意根据需要添加typedef名称.
默认情况下,vim拼写检查程序可识别代码,因此它不会拼写检查文件的代码部分.实际上,在markdown中,它将(pandoc multiline)表视为代码,因此不会拼写检查其内容.
有可能覆盖这个吗?或者为包括代码在内的整个文件启用拼写检查.
有没有办法仅在插入模式下禁用 Vim 中匹配括号的突出显示?
使用:NoMatchParen将在正常和插入模式下禁用它。
编辑: 我尝试按照评论中的建议使用 autocmd,现在我的 .vimrc 中有以下行
au InsertEnter * NoMatchParen
au InsertLeave * DoMatchParen
Run Code Online (Sandbox Code Playgroud)
但是,这样,当我分割中有两个缓冲区时,离开插入模式会更改我所在的缓冲区。有什么建议吗?
如何配置vim使用与Thor相同的语法高亮显示为ruby?当我正在编辑*.thor文件时,我可以使用:set syntax=ruby,它可以使用,但不是永久性的.有没有办法在我的.vimrc文件中做一些事情来有条件地将语法设置为ruby,如果它是*.thor?也许创建一个thor语法文件并继承ruby?
是否有配方使用给定颜色制作vim高亮显示标签字符,但仅在设置expandtab选项时?我知道'listchars',但我希望能够将"有效标签"与"无效标签"区分开来.
至于{,}和[,]和(,)我真的希望能够定义syntax region为<,>将用于C++模板使用类似如下:
a<b>
但是,有没有办法创建这样的语法区域,而不会与以下内容发生冲突:
if( a < b<c>::d )
第一个<显然是"小于"运算符,应该作为模板参数的区域的开头被丢弃.
我试图使用几个选项,但无法使其工作.尝试使用复杂的正则表达式识别模板args区域而不是一个小于操作似乎真的不可能,它只能通过使用嵌套的自引用模式检查平衡对来工作.
在vim中,我正在编辑文件类型为"markdown"的文件,但其中包含乳胶数学表达式,如$ x_i $.对于markdown,Vim的语法突出显示模式*_*(字母 - 下划线字母)是一个错误,并突出显示这些模式中的下划线为鲜红色.我想通过在我的.vimrc中添加一行来关闭它:
autocmd BufEnter *.Rmd "Dear vim, please don't highlight the pattern *_*"
Run Code Online (Sandbox Code Playgroud)
这样做的适当命令是什么?是否可以在.vimrc中执行此操作,而无需编辑语法文件?
注意:我想保持降价语法一般突出显示,只关闭该特定功能.
我一直都知道:nohl并使用它,我也使用简单的动作,所以当移动到搜索位置时,突出显示不会影响我.按n或后它会挡住我的路N.
我正在寻找一种在3 seconds按下之后禁用搜索突出显示的方法,n或者N为了完整起见我想要一种方法也可以在搜索之后禁用它/search_word<CR>.
最后,它必须是一个非阻塞命令.
谢谢,我正在慢慢进入vimscript,但是这个已经超出了我的联盟,因为我还没有看到很多带有超时的命令示例.
编辑:
在一些评论和在线研究之后,有很多迹象表明使用vimscript做到这一点并不是一个好方法.
我正在寻找一种方法,以任何语言稳定地执行此操作,例如Perl,Python,Ruby.
编辑2:
这是我的解决方案,基于@ dhruva-sagar的回答:(我将他的答案标记为正确,因为他给了我骨架).
augroup NoHLSearch
au!
autocmd CursorHold,CursorMoved * call <SID>NoHLAfter(4)
augroup END
function! s:NoHLAfter(n)
if !exists('g:nohl_starttime')
let g:nohl_starttime = localtime()
else
if v:hlsearch && (localtime() - g:nohl_starttime) >= a:n
:nohlsearch
redraw
unlet g:nohl_starttime
endif
endif
endfunction
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的日志文件创建语法文件.他们采取以下格式:
[time] LEVEL filepath:line - message
Run Code Online (Sandbox Code Playgroud)
我的语法文件如下所示:
:syn region logTime start=+^\[+ end=+\] +me=e-1
:syn keyword logCritical CRITICAL skipwhite nextgroup=logFile
:syn keyword logError ERROR skipwhite nextgroup=logFile
:syn keyword logWarn WARN skipwhite nextgroup=logFile
:syn keyword logInfo INFO skipwhite nextgroup=logFile
:syn keyword logDebug DEBUG skipwhite nextgroup=logFile
:syn match logFile " \S\+:" contained nextgroup=logLineNumber
:syn match logLineNumber "\d\+" contained
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果字符串ERROR或DEBUG什么的消息中出现,它就会被突出显示.但我不想要它.我想要它,以便关键字只有在它们之后立即落在文件路径之前才会突出显示.
这是怎么做到的?
在我的Linux机器中,带有.sv扩展名的文件默认情况下使用verilog语法突出显示方案打开,但是扩展名带有.v或.vs不带有。:set syntax=verilog每次打开这些文件之一时,我都必须在gvim中手动进行。
默认情况下,如何使这些文件扩展名.v或.vs以verilog语法突出显示?
谢谢