2010-04-01 11 views
170

Ich frage mich, ob es eine Schlüsselzuordnung in Vim gab, um bestimmte Codezeilen einzurücken (ob diese Zeilen im visuellen Modus ausgewählt wurden, oder n Zeilen über/unter der aktuellen Cursorposition).Auskommentieren eines Blocks von Python-Code in Vim

Also im Grunde etwas, das die folgenden wandelt

def my_fun(x, y): 
    return x + y 

zu

#def my_fun(x, y): 
# return x + y 

Ich bin okay mit entweder # oder """ zur Kommentierung der relevanten Linien. Idealerweise möchte ich auch die gleiche Tastenbelegung, um die Zeilen auskommentieren, wenn die gegebenen Zeilen auskommentiert wurden.

+0

Keine Notwendigkeit, das Rad neu zu erfinden, gibt es eine [plugin: tComment] (https://github.com/tomtom/tcomment_vim) für Sie, die Code für mehrere Sprachen (un) Kommentarcode unterstützt. – Meow

Antwort

372

Schritt 1: Zum ersten Spalte der ersten Zeile, die Sie kommentieren möchten.

Initial State

Schritt 2: Press: Ctrl + v und wählen Sie die Zeilen, die Sie kommentieren möchten:

Select lines

Schritt 3:Shift- - I#space (Geben Sie Insert-at-left ein, geben Sie chars ein, um einzufügen. Die Auswahl wird verschwinden, aber alle Linien innerhalb es wird nach Schritt 4.)

Comment

Schritt 4 geändert werden:Esc

<Esc>

+3

Kommentieren Sie die Zeilen auf diese Weise funktioniert super. Gibt es eine Möglichkeit, diese Zeilen zu entfernen? 'Shift-I # ' hat nicht funktioniert (vielleicht mache ich es falsch). –

+37

@ rishabh-manocha: Verwenden Sie den visuellen Block (Strg-V), um alle hinzugefügten # auszuwählen, und geben Sie x ein, um sie zu löschen. – theosp

+3

Sie müssen daran denken, dass Shift-I bedeutet "Einfügen an der ersten nicht-Leerzeichen in der Zeile", so dass es nicht zum Löschen verwendet werden kann. Bei einer visuellen Auswahl mit Strg-V werden die zu ändernden Zeichen markiert. Anschließend löscht "x" ein Zeichen im ausgewählten Bereich und löscht die Zeichen "#". Weitere Informationen finden Sie unter ": h I" und ": h CTRL-V" in vim. –

61

eine Möglichkeit, manuell

:set number 
:10,12s/^/# 
+3

Wie entfernst du sie? –

+11

@CharlieParker: ': 10,12s/^ # //' – bstpierre

+1

Daumen hoch für Ex-Antwort (alte Schule :) – mlv

19

Es gibt einige gute Plugins Hilfe Kommentar/Zeilen auskommentieren. Zum Beispiel The NERD Commenter.

20

ich in die Regel einen visuellen Block fege (<C-V>), dann suchen und das erste Zeichen ersetzen mit:

:'<,'>s/^/# 

(Eingabe von Befehlsmodus mit einem visuellen Block ausgewählt platziert ‚<,‘ automatisch> auf dem Befehl Linie) ich den Block dann Kommentar- kann durch Fegen den gleichen visuellen Block und:

:'<,'>s/^#// 
7

ich habe die folgenden Zeilen in meinem .vimrc:

" comment line, selection with Ctrl-N,Ctrl-N 
au BufEnter *.py nnoremap <C-N><C-N> mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n 
au BufEnter *.py inoremap <C-N><C-N> <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n 
au BufEnter *.py vnoremap <C-N><C-N> mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n 

" uncomment line, selection with Ctrl-N,N 
au BufEnter *.py nnoremap <C-N>n  mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n 
au BufEnter *.py inoremap <C-N>n  <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n 
au BufEnter *.py vnoremap <C-N>n  mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n 

Die Shortcuts behalten Ihre Cursorposition und Ihre Kommentare bei, solange sie mit # beginnen (es gibt Leerzeichen nach #). Zum Beispiel:

# variable x 
x = 0 

Nach Kommentierung:

# variable x 
#x = 0 

Nach uncomennting:

# variable x 
x = 0 
+0

Schön, aber ich denke Du solltest besser das einfachere '' s/^/#/'' 'regexp verwenden. Ich bevorzuge das Kommentarzeichen am Anfang der Zeile ... aber viel wichtiger ist es, Kommentare zu kommentieren ziemlich wichtig Ich würde auch die '' 'au BufEnter * .py''' löschen, da' # 'Kommentare allgemein genug sind, damit die Befehle in allen Puffern standardmäßig verwendet werden. – travc

36

Sie konnten die folgende Abbildung auf Ihrem .vimrc

vnoremap <silent> # :s/^/#/<cr>:noh<cr> 
vnoremap <silent> -# :s/^#//<cr>:noh<cr> 

Markieren Sie Ihr Block hinzufügen mit:

#, um Ihre Zeilen aus der ersten Spalte zu kommentieren.

-# auf die gleiche Weise auskommentieren.

+4

Simple ist brilliant! Danke! – I159

+0

Gibt es keine Möglichkeit, den Suchbegriff zu aktualisieren? Wenn "hlsearch" aktiviert ist, wird das erste Zeichen einer Zeile hervorgehoben. – ajwood

+0

Dieser Befehl überschreibt #, was ein gültiger und verwendeter Befehl im Befehl ist Modus jedoch – architectonic

5

Offen gesagt verwende ich ein Tcomment-Plugin für diese link. Es kann fast jede Syntax handhaben. Es definiert schöne Bewegungen und macht es mit einigen Textblock-Matcher für Python zu einem mächtigen Werkzeug.

+0

Danke! Das funktioniert großartig (zumindest in C++). – foges

21

Markieren Sie Ihr Block mit: Shift+v

Kommentar den ausgewählten Block aus mit: :norm i# (Kleinbuchstaben i)

Um Ihren Block wieder Kommentar-, markieren und kommentieren Sie mit: :norm ^x

Die :norm Befehl führt eine Aktion für jede ausgewählte Zeile aus. Beim Kommentieren wird am Anfang jeder Zeile ein # eingefügt, und das Auskommentieren löscht das #.

+0

Mit einem aktuellen Vim und einer einfachen Konfiguration wird beim Auswählen von Zeilen im visuellen Modus (mit 'Shift + v') und anschließender Verwendung von': norm i # 'nur die erste ausgewählte Zeile geändert. Das funktioniert für mich, um Zeilen 389 bis 391 zu kommentieren: ': 389,391norm i #' – mmell

5

NERDcommenter ist ein exzellentes Plugin zum Kommentieren, das automatisch eine Reihe von Dateitypen und die zugehörigen Kommentarzeichen erkennt. Lächerlich einfach zu installieren mit Pathogen.

Kommentar mit <leader>cc. Kommentar mit <leader>cu. Und Kommentare mit umschalten.

(Der Standard <leader> Schlüssel in vim ist \)

1

Es gibt eine Menge von Kommentar-Plugins für Vim - von denen eine Anzahl mehrsprachiger sind - nicht nur Python. Wenn Sie ein Plugin-Manager wie Vundle verwenden, dann können Sie für sie suchen, indem Sie beispiels (sobald Sie Vundle installiert haben) .:

:PluginSearch comment 

Und Sie werden ein Fenster der Ergebnisse. Alternativ können Sie auch einfach search vim-scripts for comment plugins.

1

Strg + k für einen Kommentar (Visual Mode):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr> 

Strg + u für uncomment (Visual Mode):

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr> 
1

Ein sehr minimal geringes Gewicht plugin: vim -Kommentar.

gcc eine Linie
dcgK Kommentar- Stellung zu nehmen. Weitere Informationen finden Sie auf der Plugin-Seite.

v + k/j markieren Sie den Block dann gcc diesen Block zu kommentieren.

Verwandte Themen