我找到并修改了一些 vimrc 代码,用于注释掉 vim 的当前行/块:
"
" Commenting blocks
"
autocmd FileType c,cpp,java noremap <buffer> <Leader>c :s,^\(\s*\)[^// \t]\@=,\1// ,e<CR>:nohls<CR>zvj
autocmd FileType sh,python noremap <buffer> <Leader>c :s,^\(\s*\)[^# \t]\@=,\1# ,e<CR>:nohls<CR>zvj
autocmd FileType vim noremap <buffer> <Leader>c :s,^\(\s*\)[^\" \t]\@=,\1\" ,e<CR>:nohls<CR>zvj
autocmd Filetype c,cpp,java noremap <buffer> <Leader>u :s,^\(\s*\)// \s\@!,\1,e<CR>:nohls<CR>zvj
autocmd Filetype sh,python noremap <buffer> <Leader>u :s,^\(\s*\)# \s\@!,\1,e<CR>:nohls<CR>zvj
autocmd Filetype vim noremap <buffer> <Leader>u :s,^\(\s*\)\" \s\@!,\1,e<CR>:nohls<CR>zvj
原始代码使用这些autocmd FileType
行来设置一个变量来定义该行的注释。它看起来类似于:
autocmd FileType c,cpp,java let b:cmtldr=//
autocmd FileType sh,python let b:cmtldr=#
autocmd FileType vim let b:cmtldr=\"
noremap <buffer> <Leader>c :s,^\(\s*\)[^&b:cmtldr \t]\@=,\1&b:cmtldr ,e<CR>:nohls<CR>zvj
但这对我不起作用,它只是粘贴在文字字符串“&b:cmtldr”中(我也试过不带&),所以我把它改成了第一块代码。然而,我的强迫症不会让我放过它。我已经搜索了如何在这种情况下在 vim 中使用变量,但我尝试过的没有任何帮助。有什么建议么?