在行末切换分号(或其他字符)

5

在IT技术中,添加(或删除)分号是一项常见的操作。但是像 A; 这样的命令会修改当前光标位置,这并不总是理想的。

有没有一种简单的方法来映射一个命令(例如;;),以切换是否在行末出现分号?

我目前在我的vimrc中使用以下命令进行添加:

map ;; A;<Esc>
2个回答

5
像这样的东西可以工作。
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>

3

我从未需要删除行尾的分号,但我偶尔会添加一个分号

nnoremap ,; m`A;<Esc>``

设置上下文标记,追加分号并跳回。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接