Problem: Durch vertikales Verschieben von Linien werden Falten geschlossen

9

Wenn ich Linien mit m(z. B. :m+1) bewege, sind alle meine Falten geschlossen. Ich kann dann die Falte mit zvwieder öffnen und der Cursor befindet sich an der Position, an die ich mich bewegt habe. Ich benutze Falten mit {{{ }}}Markierungen und habe set foldmethod=markerin meiner .vimrc.

Wie kann ich verhindern, dass vim beim Verschieben von Linien Falten schließt?

dnieder
quelle
1
Ich kann das nicht mit reproduzieren vim -u NONE -U NONE -N. Möglicherweise liegt ein Problem mit Ihrem vimrc oder einem Plugin vor.
EvergreenTree
2
Passiert für mich sogar mit -u NONE -U NONE -N. Ich benutze v7.4 unter arch linux
dnieder
1
@EvergreenTree Ich habe das gleiche Problem. Mit vim -u NONE -U NONE -N fold-testund nur einstellen foldmethod=marker. Ich verwende Vim 7.4.712 auf Arch. Wenn ich dasselbe mit Vim unter Vim 7.4.160 unter CentOS 7 versuche, erhalte ich genau die entgegengesetzten Ergebnisse (bei Verwendung alle Falten offen :m+1). Und Vim 7.2.441 unter CentOS 6 funktioniert einwandfrei ... Alle fold*Einstellungen scheinen auf diesen Computern gleich zu sein.
Martin Tournoij
1
Das ist sehr seltsam. Dies scheint ein Fehler zu sein.
EvergreenTree
3
Dies könnte durch Patch 7.4.700 verursacht werden, der versucht zu verhindern, dass Falten ungültig werden bei: Bewegungsbefehlen
Christian Brabandt

Antworten:

2

Sie können das Falten deaktivieren, bevor Sie es :m+1verwenden zi. Und dann wieder aktivieren mit zi.

Sie können auch eine spezielle Zuordnung dazu in Ihrer .vimrc hinzufügen:

""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
quelle
Das hat bei mir funktioniert. (obwohl ich verschiedene Bindungen verwendet habe)
IanEdington
1

Das Falten ist ein ziemlich komplizierter Mechanismus (siehe eine andere Antwort, die ich über Falten gegeben habe, für eine differenzierte Diskussion des Faltenscannens).

Um eine vollständige Antwort zu geben, müssen wir sehen, welche Art von Plugins Sie beim Booten einer Instanz von vim laden.

Ich wette, dass es ein paar Plugins gibt, die mit den vim-Standardeinstellungen nicht mithalten können ( vim -u NONEsollte dies reproduziert haben). Jedes Plugin, das das ändert, foldmethodist eine wahrscheinliche Ursache (ich würde versuchen, sie 1 zu 1 zu entfernen und zu sehen, was das Problem verursacht).

Wenn Sie sich überhaupt nicht mit Ihren Plugins herumschlagen möchten, würde ich empfehlen, die Einstellungen für Syntax und Analyse manuell zu ändern und dann einen Testpuffer zu öffnen, um Ihre Funktionalität zu bestätigen. Es kann eine frustrierende Reise sein, es zum Spielen zu bringen, aber mit einigem unerbittlichen Eingraben :helpsollten Sie in der Lage sein, das Tier, das sich faltet, zu streiten.

Dan Bradbury
quelle