gpt4 book ai didi

vim - 改进 TwiddleCase 功能以在可视 block 模式下工作

转载 作者:行者123 更新时间:2023-12-04 04:56:06 25 4
gpt4 key购买 nike

以下代码段可以在 vim wiki: 上找到

function! TwiddleCase(str)
if a:str ==# toupper(a:str)
let result = tolower(a:str)
elseif a:str ==# tolower(a:str)
let result = substitute(a:str,'\(\<\w\+\>\)', '\u\1', 'g')
else
let result = toupper(a:str)
endif
return result
endfunction
vnoremap ~ ygv"=TwiddleCase(@")<CR>Pgv

然而,这在视觉块模式下失败。鉴于以下
输入:
foo alpha
bar beta

将光标定位在 f 上的 foo并按
ctrl-v je~ 产生以下结果。
Foo
Bar alpha
beta

而不是预期的
Foo alpha
Bar beta

如何改进此功能以在可视块模式下正常工作?

最佳答案

问题在于表达式寄存器( "= )的使用强制进行字符操作。

要解决这个问题,请操作默认寄存器(无论如何都包含原始提取的文本),并通过 getregtype() 保持原始寄存器类型。 :

vnoremap ~ y:call setreg('', TwiddleCase(@"), getregtype(''))<CR>gv""Pgv

关于vim - 改进 TwiddleCase 功能以在可视 block 模式下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com