Konfigurieren von vim nicht Kommentare am Anfang der Zeilen beim Bearbeiten von python-Dateien
Wenn ich ein # in den Einfüge-Modus auf eine leere Zeile in Vim beim Bearbeiten von python-Dateien vim bewegt die # am Anfang der Zeile, aber ich würde gerne die # eingefügt werden soll, auf der Registerkarte Ebene, wo ich es eingetragen.
Beispielsweise beim schreiben dieses in vim
for i in range(10):
#
die # nicht dort bleiben, wo ich es eingetragen.
Er bewegt wird, wie so, durch vim.
for i in range(10):
#
Kennt jemand ein configuration item in vim, der das ändern würde?
Wenn es hilft, ich benutze Ubuntu 8.10.
- Siehe auch: stackoverflow.com/questions/191201/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich hier eine Antwort http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash
Scheint es, dass die vim-smartindent option ist die Ursache des Problems.
Auf der verlinkten Seite oben beschrieben, work-a-rounds, aber nach dem Lesen der Hilfe in smartindent in vim selbst (:Hilfe smartindent), habe ich beschlossen, zu versuchen cindent statt smartindent.
Ersetzte ich
mit
in meine .vimrc-Datei
und so weit es funktioniert perfekt.
Änderte sich dies auch behoben, das Verhalten von '<< " und " >>', zum Einrücken visual Blöcke sind python-Kommentare.
Gibt es weitere Konfigurations-Optionen und Informationen auf die Einrückung in der vim-Hilfe für smartindent und cindent (:Hilfe smartindent und :Hilfe cindent).
cindent
?@PolyThinker Wenn ich sehe, dass die Antwort viel zu dieser Frage, meiner Meinung nach, es ist keine gute Lösung. Der editor denkt immer noch, sollte es eingerückt werden den ganzen Weg nach Links - aktivieren Sie diese durch drücken der == in einer Zeile, die beginnt mit einem hash, oder drücken = während ein block von code mit Kommentaren in es wird hervorgehoben, reindent.
Ich würde empfehlen
filetype indent on
, und entfernen Sie dieset smartindent
undset autoindent
(oderset cindent
) Zeilen aus Ihrer vimrc. Jemand anderes (appparently David Bustos) war freundlich genug, zu schreiben, eine vollständige Einrückung parser für uns; es befindet sich bei $VIMDIRECTORY/Gedankenstrich/python.vim.(Paul
cindent
Lösung funktioniert wahrscheinlich auch für python, aberfiletype indent on
ist viel mehr allgemein nützlich.)Habe ich folgende Zeilen in meine .vimrc, zu sein scheint, installiert sich standardmäßig mit meinem Ubuntu 8.10
Ist und ich nicht beobachten das problem. Vielleicht können Sie versuchen, diese. (Beachten Sie, dass ^H eingetragen werden sollen, indem Sie Strg-V, Strg-H)
:help smartindent
). Ich denkeset autoindent
ist überflüssig;smartindent
enthält esMeine Lösung für die unindenting von #:
Wenn Sie cindent, zu erkennen, dass es geeignet für C-und C++ Programmieren. Hier ein # bedeutet, dass Sie erstellen, ist ein #DEFINE oder #MAKRO(), also ist das Verhalten korrekt ist. Aber auch für andere Sprachen, wo # ist ein Kommentar, ist es irritierend.
Folgendes bei mir funktioniert:
Es ist verursacht durch die 'smartindent' - Funktion. Wenn Sie
:set smartindent
in Ihr .vimrc, die Sie brauchen, um es zu entfernen.Einige der anderen Antworten waren hilfreich, aber keine war genug, um zu verhindern, dass Vim von reindenting eine Linie, wenn '#' das erste Zeichen. PolyThinker die Antwort nicht für mich arbeiten, aber es gab einen Hinweis, dass '#' kann neu zugeordnet werden zu "Stelle, dann #, dann löschen Sie die zusätzlichen Charakter und setzen Sie den cursor, wo Sie sein sollte". Dies ist die Abbildung, die das tut:
Dies ist erforderlich, weil vim-syntax-Pakete scheinen behandeln '#' als Sonderzeichen, egal wie die Optionen eingestellt sind. Ich möchte eine Linie begonnen, die mit '#' werden das gleiche wie eine Linie begonnen, mit einem anderen Charakter. Die zuverlässigste Lösung die ich gefunden habe, ist das obige mapping, die tatsächlich ändern Sie die Zeile das erste Zeichen.
Hinweis: ich habe festgestellt, das mapping bewirkt, dass Probleme nach dem ausführen
I#<esc>
dann die Taste "." zum wiederholen der vorherigen einfügen. Ich habe noch nicht eine Lösung gefunden bisher.Meine Vim-Konfiguration nicht tun. Sie könnten versuchen, die python.vim-Skript verfügbar unter diesem link: http://www.vim.org/scripts/script.php?script_id=790
Habe ich entfernt
set smartindent
aus~/.vimrc
aber es immer noch nicht deaktivieren smartindent. Wenn ich öffnete eine .py-Datei und lief:set smartindent?
es angezeigtsmartindent
.Stellt sich heraus, dass weiter unten in der
~/.vimrc
war diese Zeile:Sobald ich Sie gelöscht, "smartindent" aus dieser Zeile, dann smartindent wurde schließlich deaktiviert und meine Kommentare waren eingerückt wieder richtig.