我想要普通模式命令代字号~
,除了更改字母大小写以将文本==
更改为!=
和!=
更改为{{ 1}}。
我发现我经常这样做,我想要一个仍然使用波浪号的快捷方式。
答案 0 :(得分:2)
让我提出一种替代实现此扩展~
命令的
nnoremap <silent> ~ :call SwitchNeq()<cr>~
function! SwitchNeq()
let [s, c] = [@/, getpos('.')]
s/[!=]\ze\%#=\|\%#[!=]\ze=/\='!='[submatch(0)=='!']/e
let @/ = s
call setpos('.', c)
endfunction
答案 1 :(得分:2)
在两个选项之间切换(例如==
和!=
)只是在多个选项之间切换的特殊情况。我建议不要重载二进制~
命令,而是使用<C-A>
/ <C-X>
。 SwapIt - Extensible keyword swapper plugin提供此功能,实际上有一个默认选项可以切换==
,!=
,<=
等。
答案 2 :(得分:1)
这在vimscript中相当简单。
将以下内容从其他文件添加到您的.vimrc
或source
此代码中。
" ----------------------
" Tilde switches ==/!=
" ----------------------
function! TildeSwitch()
" Gets the pair of characters under the cursor, before and behind.
let cur_pair = getline(".")[col(".") - 2 : col(".") - 1]
let next_pair = getline(".")[col(".") - 1 : col(".")]
if cur_pair == "=="
normal! "_ch!
normal! l
elseif next_pair == "=="
normal! r!
elseif cur_pair == "!="
normal! "_ch=
normal! l
elseif next_pair == "!="
normal! r=
else
" If == and != are not found, simply use the regular tilde.
normal! ~
endif
endfunction
nnoremap <silent> ~ :silent call TildeSwitch()<cr>