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

标签 vim variables comments autocmd

我有一个简单的目标:映射 Ctrl-C,一个我认为我从未使用过的命令来杀死 vim,自动在行首插入正确的字符以注释掉该行根据文件的文件类型。

我想我可以使用自动命令来识别文件类型,并在文件打开时将 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

那张 map 标记了我的当前位置,在插入模式下转到行首,在该点回显注释字符,进入命令模式,返回到设置标记,并右移两个字符以弥补插入的注释字符(假设 C 样式注释)。

斜体部分是我遇到问题的部分;它只是作为一个占位符来代表我想做的事情。你能帮我弄清楚如何实现这一目标吗?如果您使用 strlen(CommentChar) 向右步进正确数量的空格,则可获得奖励积分! vim 大师的额外奖励积分,包括如果您处于可视模式下,如何进行 block 式注释!

我还是 vim 脚本的新手;我的 .vimrc 仅有 98 行长,所以如果你能解释你提供的任何答案,请帮助我!谢谢。

最佳答案

您可以使用 <C-r>这里:

noremap <C-c> mwI<C-r>=g:CommentChar<CR><Esc>`wll

: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>

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

关于vim - 将 vim 变量插入文本以获取注释快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869713/

相关文章:

vim - 如何客观地衡量编辑人员的工作效率?

vim - 如何让 Vim 自动放置结束大括号?

php - 获取 php 方法注释

c# - 向 XML 文件添加注释并使用 C# 读入

postgresql - 如何在 PgAdmin 查询编辑器上打开评论 block ?

vim - 在独立缓冲区内实时监控 vim 消息

bash - 在 bash 上逐行读取文件;每行包含另一个独特文件的路径

ruby - puppet getvar() 函数不工作

perl - Perl 程序什么时候需要我们?

variables - 添加两个变量时如何添加空格?