各位大佬,
想实现的功能是按了 \td 以后,在行末添加“// TODO",如果已经添加过了,就把”// TODO"删掉。
我的想法是首先找一找有没有匹配的字符串,没有的话就在行末添加,如果匹配到了,就从匹配的位置开始删到行尾。
" add or remove TODO
augroup add_todo
autocmd!
autocmd FileType c,cpp :nnoremap <silent> <buffer> <leader>td m`<c-r>=ToggleTODO()<CR><esc>``
autocmd FileType c,cpp :inoremap <silent> <buffer> <leader>td <esc>m`<c-r>=ToggleTODO()<CR><esc>``a
function! ToggleTODO()
let l:idx = match(getline('.'), '// TODO\s*$')
if l:idx < 0
" add // TODO
return "A // TODO"
else
" remove // TODO
return l:idx + 1 ."|D"
endif
endfunction
augroup END
我原本以为<C-R>=后面加函数,就是函数的返回值,但是看起来好像这个套路只在normal模式下是不能用的,所以上面这段并不能正常工作。
请问应该如何修改?或者有什么其他的实现思路吗?谢谢!
--