我非常喜欢Vim中的zx
组合键(除了文本的活动区域之外它还可以折叠所有内容)。
然而,这似乎是一个非常危险的组合。
在折叠上按x
会删除折叠。
因此,如果省略z
,或者被其他一些前面的键组合捕获,则它
通过单独按x
,可以很容易地意外删除折叠中的文本。
鉴于dd
也可用于删除折叠中的文本,如果可以的话,那将是好事
禁用x
作为折叠删除工具。
x
作为折叠删除键禁用? 答案 0 :(得分:4)
您只能使用以下简单的x
映射停用折叠上的<expr>
:
nnoremap <expr> x ((foldclosed('.')==-1)?('x'):('zx'))
与@Eelvex功能不同,它保留所有x
功能,并且还会将x
重新映射到zx
的折叠上。
答案 1 :(得分:2)
x
您可以通过以下方式完全禁用x
(或任何其他键/组合)
nmap x <nop>
(顺便说一下,x
与dl
而非dd
相同
在使用运算符时,总是将闭合折叠作为一个整体包含在内,因此(afaik)不能仅为折叠删除禁用x
。
一种可能的解决方法是在您“打开”时自动打开折叠,因此x
只会删除一个字符(正常情况下):
set foldopen=all
但这使得浏览代码变得更加麻烦。
x
如果你不介意禁用某些x
的功能(例如删除到注册表中),这也可以完成这项任务:
function Foldx()
if foldclosed(".") == line(".")
echo "Watch it!"
else
call feedkeys("dl")
echo "x"
endif
endfunction
nmap x :call Foldx()<cr>