将vim变量插入文本以注释快捷方式

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行长,所以如果你能解释你提供的任何答案,请帮助我!谢谢.

ZyX*_*ZyX 5

你可以<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)

而且您不必自己定义注释字符.