脚本宝典收集整理的这篇文章主要介绍了Vim,上下文敏感的注释/取消注释行为,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我用Vim编辑了很多PHP代码,并且在我的.vimrc中遇到了一些宏.
我目前使用这两个宏来评论/取消注释C风格
"c-style (//) comment (Press the [.] key)
au FileTyPE PHP vnoremap . :s/^\(\s*\)\(.\+\)$/\1\/\/\2/<CR>:noh<CR>gv
"c-style (//) uncomment (PRess the [,] key)
au FileType PHP vnoremap , :s/^\(\s*\)\/\//\1/<CR>:noh<CR>gv
"html-style (<!-- -->) comment (press the [.] key)
au FileType html vnoremap . :s/^\(\s*\)\(.\+\)$/\1<!-- \2 -->/g<CR>:noh<CR>gv
"html-style (<!-- -->) uncomment (press the [,] key)
au FileType html vnoremap , :s/^\(\s*\)<!-- \(.*\) -->/\1\2/g<CR>:noh<CR>gv
这些宏在应用于其预期的文件类型时工作正常,但由于PHP文件中经常嵌入HTML,因此PHP注释样式无用.
有没有办法让Vim检测它是否正在处理PHP文件中的一大块HTML代码,然后应用正确的评论行为?
编辑:我知道我可以手动设置文件类型,并且有可用的插件,我希望了解更多关于编写更好的宏.
解决方法:
要做你想做的事,实际上没有办法绕过写一个函数并将它映射到你喜欢的键.
首先:echo synIDattr(synID(line(“.”),col(“.”),1),“name”)将打印光标下当前单词的高亮组名称.
您可以使用该信息来确定要使用的注释样式.
一个粗略的例子让你入门:
function! s:MyComment () range
for i in range(a:Firstline, a:lastline)
exe "normal " . i . "gg"
normal ^
let stuff = synIDattr(synID(line("."), col("."), 1), "name")
if strpart(stuff, 0, 4) == "html"
normal I<!--
normal A -->
else
normal I//
endif
enDFor
endfunction
vmap <silent> . :call <SID>myComment()<CR>
以上是脚本宝典为你收集整理的Vim,上下文敏感的注释/取消注释行为全部内容,希望文章能够帮你解决Vim,上下文敏感的注释/取消注释行为所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。