vimの現在の行/ブロックをコメントアウトするために見つけたいくつかのvimrcコードを見つけて変更しました。
"
" 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」に貼り付けられただけなので (& なしでも試しました)、コードの最初のブロックに変更しました。しかし、私のOCDはそれをさせません。このコンテキストでvimで変数を使用する方法をいくつか検索しましたが、何も役に立ちませんでした。助言がありますか?