Schlagwort-Archive: Vim

Working with VIM

Vor diesem Editor habe ich mich lange Zeit gesträubt: VIM (vi improved). Die Einarbeitung ist doch etwas schwierig, da die Benutzung sehr auf Tastatur ausgelegt ist. Doch wenn die grundsätzlichen Befehle (und vor Allem die zugrundelegende Logik) bekannt ist, gelingt ein sehr flüssiges Arbeiten. Hauptsächlich arbeite ich ungern mit der Maus und gern im Terminal/Konsole. Folgend nun einige Tutorials bzw. nützliche Plugins.

VIM arbeitet in mehreren Modi, deren wichtigste sind: Normal-Modus (ansehen, ersetzen), Einfügemodus (bearbeiten), Visueller Modus (selektieren) Command-line-Modus (Angabe von Ex-Kommandos). Hinzugefügt werden kann Text grundsätzlich nur im Einfügemodus (zu Erreichen durch i [Bearbeiten vor dem Cursor] oder a [hinter dem Cursor] oder o [unter dem Cursor]).

Eines der wichtigsten Editierfunktionen ist sicherlich das Kopieren oder Verschieben von Text. Durch v (zeichenweise) oder V (zeilenweise) in den visuellen Modus wechseln und den gewünschten Text mit den Cursortasten markieren.

yy => copy current line
y => copy selected text („v“)
d => cut/delete selected text („v“)
p => paste

Weitere Infos dazu finden sich auf vim.wikia.com, tech-recipes.com oder alvinalexander.com.

Cut & Paste

Dateien aus der Betriebssystem-Zwischenablage lassen sich folgendermaßen einfügen:

  1. :set paste autoindent verhindern
  2. i in Einfüge-Modus wechseln
  3. rechte Maustaste -> Einfügen

Um Texte aus VIM in andere Programme zu kopieren, muss VIM mit der Option clipboard installiert/kompiliert sein. Dies ist standardmäßig nicht der Fall.

Darstellung von Dateien

VIM bietet auch die Möglichkeit, mehrere Dateien per Splitscreen parallel zu öffnen:

:vsp filename
cmd+w cmd+w => switch between files/viewports
cmd+w q => close active window/file

Plugins

Erst Plugins machen VIM zu einem richtig praktischen Editor, fast zu einer IDE. Anfangs hab ich es mit vim-pathogen probiert, später bin ich zu spf13 gewechselt. Ersteres baut auf Git-Submodule, zweiteres auf Vundle (und ist standardmäßig umfangreicher). Die meiner Meinung nach nützlichsten Plugins sind:

  • NERDTree (zur Darstellng eines Dateibaums)
  • Undotree
  • crtlp (Liste verwendeter Dateien)
  • Fugitive (Git-Integration)
  • Tagbar
  • Airline (eine bessere Statusleiste)
  • AutoClose
  • sessionman (Verwalten von Projekten/Sessions)

Eine passende Übersicht findet sich auf vim.wikia.com. Dort wird zum Beispiel auch netrw zur FTP-Integration genannt.

Installation von spf13:

$ curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh

Tagbar

Für Tagbar muss ctags auf dem System vorhanden/installiert sein. Hier eine kurze Installationsanleitung:

  1. download ctags (http://ctags.sourceforge.net/)
  2. install ctags:
$ cd path/to/ctags/
$ ./configure
$ make
$ sudo make install
$ make clean

3.  start vim & tagbar: `:TagbarOpen` or `:TagbarToggle`

Autovervollständigung

Prüfen auf Verfügbarkeit einer Autovervollständigung:

$ vim
:echo has("lua")
=> if_lua disabled -> neocomplete funktioniert nicht!
$ echo UnBundle \'neocomplete\' >> ~/.vimrc.bundles.local

Literatur

Passende und zu empfehlende (Einstiegs-)Literatur:
„vim 7 GE-PACKT“, Reinhard Wobst, mitp, ISBN 978-3-8266-1781-2

Cheatsheet

Hier ein kurzer Cheatsheet (spf13):

spf13 <leader> is: ,

<leader>e                         open NERDTree with current file
<leader>fc                        Find merge conflict markers
<leader>ff                         display all lines with keyword under cursor and ask which one to jump to
<leader>fu                        ctrl-p funky / list recently modified lines
<leader>gs                       :Gstatus         works like ‚git status‘
<leader>gd                      :Gdiff                works like ‚git diff‘
<leader>gc                      :Gcommit       works like ‚git commit‘
<leader>gl                       :Glog                 works like ‚git log‘
<leader>gp                      :Gpush            works like ‚git push‘
<leader>gr                       :Gedit              ??
<leader>gw                     :Gwrite           works like ‚git add %‘ if working-copy is active window
<leader>ge                      :Gread             works like ‚git co %‘ if working-copy is active window
<leader>ru                      list recently used files <silent> <D-r>
<leader>sc                      close session
<leader>sl                       list sessions
<leader>ss                      save session
<leader>tt                       toggle tagbar
<leader>u                        toggle undo-tree

<C-p>                                 list files

:vim /pattern/gj path
>                                          Suche in path nach pattern
>                                          Option `g`: alle Vorkommen
>                                          Option `j`: unterbinde Öffnen des ersten Suchergebnisses (der ersten Datei)
:cn                                      nächstes Suchergebnis (Datei) öffnen
:cp                                      vorheriges Suchergebnis (Datei) öffnen
:cw                                     Suchergebnisse auflisten

:!echo #                           prints current filename
:!CMD                              execute Shell-Command
:pwd                                  prints current directory

:let @/ = „“                     clear search-highlighting by clearing search-string
:noh                                  clear search-highlighting