防止x在Vim中删除折叠

时间:2011-02-27 05:56:29

标签: vim folding

我非常喜欢Vim中的zx组合键(除了文本的活动区域之外它还可以折叠所有内容)。 然而,这似乎是一个非常危险的组合。 在折叠上按x会删除折叠。 因此,如果省略z,或者被其他一些前面的键组合捕获,则它 通过单独按x,可以很容易地意外删除折叠中的文本。

鉴于dd也可用于删除折叠中的文本,如果可以的话,那将是好事 禁用x作为折叠删除工具。

  • 如何将x作为折叠删除键禁用?

2 个答案:

答案 0 :(得分:4)

您只能使用以下简单的x映射停用折叠上的<expr>

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

与@Eelvex功能不同,它保留所有x功能,并且还会将x重新映射到zx的折叠上。

答案 1 :(得分:2)

1。禁用x

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

nmap x <nop>

(顺便说一下,xdl而非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>