3

我真的很喜欢zxVim 中的组合键(它可以折叠除文本活动区域之外的所有内容)。然而,这似乎是一个相当危险的组合键。按下x折叠删除折叠。因此,如果z被省略,或者被前面的某个其他组合键捕获,则很容易通过x自行按下来意外删除折叠中的文本。

鉴于它dd也可用于删除折叠中的文本,如果我可以禁用x折叠删除工具会很好。

  • 如何x禁用折叠删除键?
4

2 回答 2

4

x只能使用以下简单<expr>映射禁用折叠:

nnoremap <expr> x ((foldclosed('.')==-1)?('x'):('zx'))

与@Eelvex 函数不同,它保留了所有x功能,并且还将x在折叠上运行时重新映射到zx.

于 2011-02-27T10:07:59.947 回答
2

1.禁用x

您可以通过以下方式完全禁用x(或任何其他键/组合):

nmap x <nop>

(x顺便说一句,与dlnot相同dd)

使用运算符时,始终将闭合折叠作为一个整体包含在内,因此(afaik)不可能x仅禁用折叠删除。

2.自动开折

一种可能的解决方法是在您“打开”折叠时自动打开折叠,因此x只会删除一个字符(正常):

set foldopen=all

但这使得浏览代码变得更加麻烦。

3.重新映射x

如果您不介意禁用某些x功能(例如删除到寄存器),这也可以完成这项工作:

function Foldx()
  if foldclosed(".") == line(".")
    echo "Watch it!"
  else
    call feedkeys("dl")
    echo "x"
  endif
 endfunction

 nmap x :call Foldx()<cr>
于 2011-02-27T06:18:43.053 回答