Verwirrung über das Falten von Vim - wie deaktiviere ich das?


116
  1. Wenn ich die Datei öffne, sieht es so aus: Geben Sie hier die Bildbeschreibung ein oder sogar so Geben Sie hier die Bildbeschreibung ein
  2. Wenn ich alle Falten öffne, werden sie wieder geschlossen, wenn ich zu einem anderen Puffer navigiere und zurückkomme.
  3. Um damit arbeiten zu können, muss ich mich zRjedes Mal beim Öffnen eines Puffers bewerben .

Ich habe diese eingerichtet in .vimrc:

set foldlevelstart=99
set foldlevel=99

Bitte weisen Sie mich darauf hin, wie Sie die Faltung deaktivieren oder zumindest zu einem anderen Puffer navigieren können, um die geöffneten nicht zu schließen.


2
Wenn Sie vim zum ersten Mal starten, führen Sie es aus :set foldlevelund :set foldlevelstartsehen Sie, worauf es eingestellt ist. Meine anfängliche Vermutung ist, dass diese Werte irgendwo zurückgesetzt werden. Wenn ich diese Werte zu meinem vimrc hinzufüge, funktioniert alles wie erwartet.
Cledoux

Antworten:


209

Du bist nicht allein.

set nofoldenable    " disable folding

7
Beachten Sie, dass dies keine Auswirkungen auf vimdiff hat. Wenn vim ein Diff-Fenster erstellt, scheint es die foldenableOption zu überschreiben . Die einzige Problemumgehung, die ich gefunden habe, besteht darin, die contextUnteroption diffoptauf etwas wirklich Riesiges zu setzen. zB:set diffopt+=context:99999
Laurence Gonsalves

14
es war vim-markdown . Verwenden Sielet g:vim_markdown_folding_disabled=1
BenjaminGolder


2
Ich mag die Lösung von glts unten besser: Verwenden Sie 'zi', um foldenable umzuschalten. Eines der wenigen großen Probleme mit vim ist die schiere Anzahl von Dingen, an die man sich erinnern muss. Kleinigkeiten wie 'zi' statt 'foldenable' sind von Gott gesandt!
Thierry

1
scheint bei mir nicht zu funktionieren :( Python-Code ist noch gefaltet.
Weima

55

Der einfachste Weg, das Falten im laufenden Betrieb zu deaktivieren (und zu aktivieren), ist zi.

ziist der normale Modusbefehl 'foldenable', der genau wie umschaltet :set foldenable!.

Mnemonik: "fold i nvert". Siehe :h zi.


44

Fügen Sie set nofoldenableIhrem ~ / .vimrc hinzu, um das Falten zu deaktivieren.


@Magnus: Dies geschieht absichtlich, um vimdiffzu vermeiden, dass viele identische Zeilen angezeigt werden. Der Anwendungsfall ist anders, daher wird er von der nicht beeinflusst nofoldenable. zRöffnet alle Falten; Ich kenne keine Einstellung, die das Einklappen deaktiviert vimdiff. (Da es der einzige Ort ist, an dem mich das Falten nicht stört.)
DevSolar

16

Hier ist ein Artikel der kurz und prägnant zusammenfasst, warum Falten cool ist. Der einzeilige Grund ist, dass das Navigieren durch das Falten sehr große Dateien zum Kinderspiel macht.

Wenn Sie das Falten aktiviert lassen möchten und einfach immer mit allen geöffneten Falten beginnen möchten, erfahren Sie im vim-Wiki , wie. Die für Sie interessante Methode wäre wahrscheinlich die Autocommand-Methode.

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

Ich würde auch empfehlen, nach benutzerdefinierten Faltmethoden für die von Ihnen verwendete Sprache zu suchen. Wenn Sie einfach "vim <Sprache hier einfügen> falten" googeln, werden eine Reihe von Optionen angezeigt. Spielen Sie mit den verschiedenen Optionen, bis Sie eine Faltmethode gefunden haben, die Ihnen gefällt.


4

Ich habe diese Zeile zu meiner .vimrcDatei hinzugefügt, da ich das gleiche Problem hatte:

autocmd FileType * exe "normal zR"

Dieser Befehl wird jedes Mal ausgeführt, wenn Sie eine Datei automatisch öffnen. Sie werden den Fehler also nicht sehen und die Faltfunktion geht auch nicht verloren.)


3

Fügen Sie einfach eine weitere hinzu, um die Diskussion zu vervollständigen.

So aktivieren Sie das Falten von Code:

:set foldenable oder kurz gesagt, :set fen

So deaktivieren Sie die Code-Faltung:

:set nofoldenable oder kurz gesagt, :set nofen

Sobald Sie ermöglichen Code-Faltung, haben Sie alle Befehle , wie zf,zo etcauf Ihren Wunsch nach der Einstellung von :set fdm=xxxxwo typische Werteexpr,syntax,manual etc.


1

Es tut mir leid, wenn ich eine verwandte Frage beantworte, aber ich fand es nützlich, zwei Dateien neben dem mit so etwas deaktivierten Falten anzuzeigen:

vim "+set nofen" -O file1 file2

1

Vim macht es erstaunlich schwierig, das Falten zu deaktivieren, insbesondere wenn Sie vimdiff verwenden.
Keine der oben genannten Lösungen hat bei mir funktioniert, aber dies hat funktioniert (zu ~ / .vimrc hinzufügen):

au WinEnter * set nofen
au WinLeave * set nofen

1

Ich habe foldlevel=20, foldlevelstart=20und ich verwende foldmethod=syntax. Es hilft mir, mit der richtigen Faltung in Vim zu arbeiten.

set nofoldenable Deaktiviere das Falten, aber manchmal brauche ich es

vim.wikia

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.