phy*_*ael 3 variables vim comments autocmd
我有一个简单的目标:地图按Ctrl-C,命令我不认为我曾经用来杀掉vim,在一行正确的字符(S)的开头自动插入根据注释掉线文件的文件类型.
我想我可以使用自动命令识别文件类型,并在文件打开时将vim变量设置为正确的注释字符.所以我尝试了类似的东西:
" Control C, which is NEVER used. Now comments out lines!
autocmd BufNewFile,BufRead *.c let CommentChar = "//"
autocmd BufNewFile,BufRead *.py let CommentChar = "#"
map <C-C> mwI:echo &CommentChar<Esc>`wll
Run Code Online (Sandbox Code Playgroud)
该地图标记我当前的位置,在插入模式下转到行的开头,在该点回显注释字符,进入命令模式,返回到设置标记,并向右移动两个字符以弥补插入注释字符(假设C样式注释).
斜体部分是我遇到麻烦的部分; 它只是作为一个占位符来代表我想做的事情.你能帮我弄清楚如何实现这个目标吗?如果您使用strlen(CommentChar)向右移动正确数量的空格,则可获得奖励积分!vim-master的额外奖励积分包括如果您处于视觉模式时如何进行块式评论!!
我在vim脚本方面还是比较新的; 我的.vimrc是98行长,所以如果你能解释你提供的任何答案,请帮助我!谢谢.
你可以<C-r>在这里使用:
noremap <C-c> mwI<C-r>=g:CommentChar<CR><Esc>`wll
Run Code Online (Sandbox Code Playgroud)
看:h i_CTRL-R.
另外看看NERDCommenter插件,它的映射将如下所示:
" By default, NERDCommenter uses /* ... */ comments for c code.
" Make it use // instead
let NERD_c_alt_style=1
noremap <C-c> :call NERDComment(0, "norm")<CR>
Run Code Online (Sandbox Code Playgroud)
而且您不必自己定义注释字符.