在IT技术中,添加(或删除)分号是一项常见的操作。但是像 A;
这样的命令会修改当前光标位置,这并不总是理想的。
有没有一种简单的方法来映射一个命令(例如;;
),以切换是否在行末出现分号?
我目前在我的vimrc中使用以下命令进行添加:
map ;; A;<Esc>
在IT技术中,添加(或删除)分号是一项常见的操作。但是像 A;
这样的命令会修改当前光标位置,这并不总是理想的。
有没有一种简单的方法来映射一个命令(例如;;
),以切换是否在行末出现分号?
我目前在我的vimrc中使用以下命令进行添加:
map ;; A;<Esc>
nnoremap ;; :s/\v(.)$/\=submatch(1)==';' ? '' : submatch(1).';'<CR>
这个命令使用了替换操作,并检查最后一个字符是否是分号,如果是,则删除它。如果不是,则将其附加到匹配的字符。在替换部分中,这个命令使用了\=
来执行vim表达式。
如果您想匹配任意字符,可以将其包装在函数中并传入所需匹配的字符。
function! ToggleEndChar(charToMatch)
s/\v(.)$/\=submatch(1)==a:charToMatch ? '' : submatch(1).a:charToMatch
endfunction
nnoremap ;; :call ToggleEndChar(';')<CR>
我从未需要删除行尾的分号,但我偶尔会添加一个分号
nnoremap ,; m`A;<Esc>``
设置上下文标记,追加分号并跳回。