问题:垂直移动线会关闭折痕


9

当我用m(例如:m+1)移动线时,所有折叠都关闭了。然后,我可以再次打开折叠,zv光标将位于我移动到的位置。我使用带{{{ }}}标记的折叠功能,并且set foldmethod=marker在我的.vimrc文件中使用。

如何在移动线时防止vim关闭折叠?


1
我无法使用复制它vim -u NONE -U NONE -N。您的vimrc或插件可能有问题。
EvergreenTree

2
即使使用-u NONE -U NONE -N也会为我发生。我在Arch Linux上使用v7.4
dnieder

1
@EvergreenTree我有同样的问题。使用vim -u NONE -U NONE -N fold-test和设置foldmethod=marker。我在Arch上运行Vim 7.4.712。如果我在CentOS 7上的Vim 7.4.160上对Vim尝试相同的操作,则会得到完全相反的结果(使用时,所有折叠都打开:m+1)。而且CentOS 6上的Vim 7.2.441可以正常工作... fold*这些机器上的所有设置似乎都相同。
马丁·图尔诺伊

1
真奇怪 这似乎是一个错误。
EvergreenTree

3
移动命令:这可能通过补丁7.4.700它试图阻止引起的,可以折叠得到无效的
基督教Brabandt

Answers:


2

您可以使用禁用折叠:m+1功能zi。然后使用再次启用它zi

您还可以在.vimrc中为此添加一个特殊的映射:

""move line up/down with Shift+up/down
nnoremap <S-Up> zi:m-2<CR>zi
nnoremap <S-Down> zi:m+<CR>zi
inoremap <S-Up> <Esc>zi:m-2<CR>zia
inoremap <S-Down> <Esc>zi:m+<CR>zia

这对我有用。(尽管我使用了不同的绑定)
IanEdington

1

折叠是一种非常复杂的机制(有关折叠扫描的细微讨论,请参见我对折叠的另一个回答)。

为了给出完整的答案,我们将需要在启动vim实例时查看正在加载的插件类型。

我敢打赌,有一些插件正在使用默认的vim设置(vim -u NONE应该已经复制了这个)。任何更改的插件foldmethod都是可能的原因(我会尝试将其一一删除,看看是什么原因导致了问题)

如果您根本不想弄乱插件,我建议您手动调整语法+解析设置,然后打开测试缓冲区以确认您的功能。要使其表现出色可能是一个令人沮丧的旅程,但经过不懈的挖掘,:help您应该能够扭转正在折叠的野兽。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.