部分是为了练习,部分是为了个人使用,我希望能够进入可视模式,选择一些行,然后点击“,”,然后切换评论。(我知道 NerdCommenter 存在,但我想要一些简单的东西,没有什么花哨的 - 再说一遍,这也是练习。)
我了解到您可以使用 '&filetype' 来访问文件类型,而 '.' 连接字符串,==# 是区分大小写的字符串比较,=~ 是正则表达式匹配。我还了解到 getline('.') 获取视觉模式突出显示的行(如果多行突出显示,则每行)。
这是我的(有缺陷的)
.vimrc
vnoremap , :call ToggleComment()<CR>
function! ToggleComment()
"Choose comment string based on filetype.
let comment_string = ''
if &filetype ==# 'vim'
let comment_string = '"'
elseif &filetype ==# 'cpp'
let comment_string = '\/\/'
endif
let line = getline('.')
if line =~ '^' . comment_string
"Comment.
" How could I do the equivalent of "shift-I to go to the beginning of the
" line, then enter comment_string"?
else
"Uncomment. This is flawed too. Maybe I should just go to the beginning of
"the line and delete a number of characters over?
execute 's/^' . comment_string . '//'
endif
endfunction
对于取消注释的情况,我得到的一件事是,无论该行是否被注释,是
Pattern not found: ^"
(我在我的 vimrc 文件上进行了测试。)
建议赞赏 - 我觉得这不应该太复杂。