gpt4 book ai didi

vim - vim 中的隐藏功能仍然让我移动所有字符

转载 作者:行者123 更新时间:2023-12-04 19:19:11 24 4
gpt4 key购买 nike

这是我所做的:syntax match conceal Test +[A-Z0-9]\{6}+:set conceallevel=2:set concealcursor=nvi因此,当我在 vim 中编写 123456 时,我希望它什么都没有。但是当我移动到那个区域时实际发生的是我必须在我想要移动的方向上移动 6 次才能让光标通过那个区域。

有没有办法解决这个问题?我想让 vim 看到它,好像那里什么都没有,当我移动到那个区域时,就好像那里什么都没有。但我仍然希望能够搜索并删除它。

最佳答案

目前没有内置的方法来做到这一点。您可以使用 synconcealed()确定光标下是否有隐藏字符及其隐藏的内容并重新映射所有移动键以尊重它:像这样:

function! ForwardSkipConceal(count)
let cnt=a:count
let mvcnt=0
let c=col('.')
let l=line('.')
let lc=col('$')
let line=getline('.')
while cnt
if c>=lc
let mvcnt+=cnt
break
endif
if stridx(&concealcursor, 'n')==-1
let isconcealed=0
else
let [isconcealed, cchar, group]=synconcealed(l, c)
endif
if isconcealed
let cnt-=strchars(cchar)
let oldc=c
let c+=1
while c<lc && synconcealed(l, c)[2]==group | let c+=1 | endwhile
let mvcnt+=strchars(line[oldc-1:c-2])
else
let cnt-=1
let mvcnt+=1
let c+=len(matchstr(line[c-1:], '.'))
endif
endwhile
return ":\<C-u>\e".mvcnt.'l'
endfunction
nnoremap <expr> l ForwardSkipConceal(v:count1)

.注意:这对单个 Action ( l ) 和正常模式执行此操作,只是为了显示它可以完成的方式。

关于vim - vim 中的隐藏功能仍然让我移动所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397103/

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