Проблема: перемещение линий по вертикали закрывает складки

9

Когда я перемещаю линии m(например :m+1), все мои складки закрыты. Затем я могу снова открыть складку, zvи курсор будет в той позиции, в которую я переместился. Я использую складывание с {{{ }}}отметками и имею set foldmethod=markerв моем .vimrc.

Как я могу предотвратить закрытие Vim при перемещении линий?

dnieder
источник
1
Я не могу воспроизвести это, используя vim -u NONE -U NONE -N. Это может быть проблема с вашим vimrc или плагином.
EvergreenTree
2
Случается для меня даже с -u NONE -U NONE -N. Я использую v7.4 на arch linux
dnieder
1
@ EvergreenTree У меня такая же проблема. С vim -u NONE -U NONE -N fold-testи просто настройка foldmethod=marker. Я использую Vim 7.4.712 на Arch. Если я попробую то же самое с Vim на Vim 7.4.160 на CentOS 7, я получу совершенно противоположные результаты (все сгибы открываются при использовании :m+1). И Vim 7.2.441 на CentOS 6 работает нормально ... fold*На этих машинах все настройки одинаковы.
Мартин Турной
1
Это очень странно. Это похоже на ошибку.
EvergreenTree
3
Это может быть вызвано патчем 7.4.700, который пытается предотвратить сгибания, которые становятся недействительными: команды move
Кристиан Брабандт

Ответы:

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
user2683458
источник
Это сработало для меня. (хотя я использовал разные привязки)
IanEdington
1

Складывание является довольно сложным механизмом (см. Другой ответ, который я дал о складках, для подробного обсуждения сканирования складывания).

Чтобы получить полный ответ, нам нужно увидеть, какие типы плагинов вы загружаете при загрузке экземпляра vim.

Могу поспорить, что есть несколько плагинов, которые изменяют настройки по умолчанию ( vim -u NONEдолжны были воспроизвести это). Любой плагин, который изменяет, foldmethodявляется вероятной причиной (я попытался бы удалить их 1 на 1 и посмотреть, что вызывает проблему)

Если вы вообще не хотите портить свои плагины, я бы порекомендовал вручную настроить параметры синтаксиса + синтаксического анализа, а затем открыть тестовый буфер для подтверждения вашей функциональности. Это может быть разочаровывающим путешествием, чтобы заставить его играть хорошо, но с некоторой неустанной копкой в ​​нем :helpвы сможете сразить зверя, который сворачивается.

Дэн Брэдбери
источник