2010-01-14 2 views
51

starten Immer wenn ich einen Kommentar zu einer vertieften Linie in vim hinzufügen möchten, schlug ich Shift- - o (öffnen Sie eine neue Zeile über der aktuellen, Wechseln Sie in den Einfügemodus) und beginnen Sie mit der Eingabe eines Python-Kommentars (mit). Dieser Hash wird dann magisch an den Anfang der Zeile verschoben (keine Einrückung) und ich muss einige Male auf Tab klicken.Kommentare (#) gehen der Linie in der Insert-Modus in Vim

Wer weiß, wie man es umgeht?

Antwort

52

Ich nehme an, Sie haben set smartindent in Ihrem .vimrc

Siehe :h smartindent

When typing '#' as the first character in a new line, the indent for 
that line is removed, the '#' is put in the first column. The indent 
is restored for the next line. If you don't want this, use this 
mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H. 
When using the ">>" command, lines starting with '#' are not shifted 
right. 

Ich glaube, Sie smartindenting nicht brauchen, während Python-Codierung. So entfernen Sie es aus Ihren Einstellungen oder fügen Sie folgendes zu Ihrem .vimrc:

au! FileType python setl nosmartindent 
+0

Diese Antwort ist offensichtlich richtig auf das Geld, vielen Dank. Ich hatte das komplett vermisst. Allerdings würde ich nicht der Tatsache zustimmen, dass ich die smartindenting nicht brauche, da Python alles darüber ist. Ich kann stattdessen nur die Ausnahme hinzufügen. Ich frage mich jedoch, was ist das Beste, die Inoremap des Handbuchs oder die von Haes zur Verfügung gestellt? Oder, was ist der Unterschied? –

+2

Ich denke, dass für Python 'smartindent' nutzlos ist. Python-Programmierer brauchen keinen Einzug, um automatisch eingefügt zu werden 1. nach einer Zeile, die auf '{'; 2. vor einer Zeile, die mit '}' beginnt. Und Schlüsselwörter von 'cinwords' werden durch den Python-Dateityp-Einzug korrekt verarbeitet. –

+0

Grundlegende Inoremaps sind die gleichen. Der einzige Nachteil dieser Inoremap ist - Sie können die Kommentare nicht mit '>>' –

1

Sie können versuchen Nerd Commenter, die ein Plugin ist, mit dem Sie Kommentare zu Zeilen in den meisten Sprachen automatisch hinzufügen können. Setzen Sie den Cursor einfach auf die Zeile, an der Sie interessiert sind, und geben Sie ,cSpeicherplatz ein und die Zeile wird auskommentiert. Mit den gleichen Tastenanschlägen wird der Kommentar entfernt, um die Zeile anzuzeigen.

Also, wenn Sie haben:

def func(): 
    print("indented") <- cursor position in command mode 

Typ ,cRaum und Sie erhalten:

def func(): 
    #print("indented") 
+0

comments.vim ist eine leichte Alternative http://www.vim.org/scripts/script.php?script_id=1528 – Shaun

9

versuchen setzen, dass in Ihrem .vimrc:

autocmd BufRead *.py inoremap # X<c-h># 

Dadurch wird das Einfügen des Hash (Pfund) -Zeichens immer in Python-Quelldateien eingerückt.

+0

Dank @Haes, ich würde eigentlich lieber smartindent beim Bearbeiten von Python-Dateien lassen. Vielleicht ist es trivial, nach dem Start einer neuen if-Anweisung einen Tab hinzuzufügen, aber das ist es, was ich gewohnt bin. – isaaclw

+1

Ok, eigentlich was ich brauchte war "Dateityp Plugin Einzug auf", dann habe ich smartindent für Python deaktiviert. – isaaclw