Um ein Vimer der ersten Stunde zu sein, bin ich mindestens zehn Jahre zu jung, aber ich bin inzwischen recht lange dabei. Angefangen habe ich irgendwann um und bei 1999 mit einer der 5.x Versionen. Damals war Vim noch einigermaßen überschaubar, aber über die Jahre ist der Editor stark gewachsen und ich glaube, dass es inzwischen doch recht schwer ist einen sinnvollen Einstieg zu finden. Einfach weil viele Konzepte und Funktionen in der Masse untergehen. Also, mal schnell zusammengetippt:
Die wirkliche Macht des klassischen vi und von viel mehr Vim ergibt sich daraus, dass es eine Sprache ist. Diese Sprache besteht aus Bewegungskommandos, oft Selektoren genannt und aus Befehlen. Als Beispiel
gqap
, es besteht aus dem Kommando
gq
für "Formartiere Zeilen" und dem Selektor
ap
"A Paragraph", also "den aktuellen Absatz". Zusammen "Formierte den aktuellen Absatz". Nun hat Vim eine Unmenge Selektoren und noch viel mehr Kommandos, will man wirklich schnell mit Vim werden kommt man nicht umhin die schlicht und ergreifend zu lernen. Eine gute Strategie ist, mit den grundsätzlichen Selektoren wie
h
,
j
,
k
und
l
anzufangen und immer, wenn man das Gefühl hat, dass man gerade etwas unnötig kompliziert macht, nachzuschauen wie es besser geht. Und ganz wichtig, Vim ist sehr gut dokumentiert. Man kann viel lernen, wenn man konsequent die Doku liest.
Um in dem Beispiel zu bleiben,
:help gq
:
Code:
*gq*
gq{motion} Format the lines that {motion} moves over.
Formatting is done with one of three methods:
1. If 'formatexpr' is not empty the expression is
evaluated. This can differ for each buffer.
2. If 'formatprg' is not empty an external program
is used.
3. Otherwise formatting is done internally.
In the third case the 'textwidth' option controls the
length of each formatted line (see below).
If the 'textwidth' option is 0, the formatted line
length is the screen width (with a maximum width of
79).
The 'formatoptions' option controls the type of
formatting |fo-table|.
The cursor is left on the first non-blank of the last
formatted line.
NOTE: The "Q" command formerly performed this
function. If you still want to use "Q" for
formatting, use this mapping: >
:nnoremap Q gq
Und
:help ap
:
Code:
ap "a paragraph", select [count] paragraphs (see
|paragraph|).
Exception: a blank line (only containing white space)
is also a paragraph boundary.
When used in Visual mode it is made linewise.
Außerdem sollte man in jedem Fall sicherstellen, dass Vim nicht im Kompatibilitäsmodus zu vi läuft. Der ist gut und schön, aber man verliert grob geschätzt 98% der Funktionalität und bekommt im Gegenzug all die schönen Bugs des vi. Dazu muss in der vimrc möglichst weit oben
set nocompatible
aufgerufen werden.
Überhaupt ist die vimrc sozusagen der heilige Gral, über Jahre gepflegt und um den eigenen Workflow gebaut, kann sie überraschende Dimensionen annehmen. Es ist daher eine gute Idee die vimrc gleich von Beginn an sauber zu kommentieren und strukturiert aufzubauen, idealerweise trackt man sie noch über svn, git oder einem anderen Versionsverwaltungssystem. Irgendwann sieht es dann so aus:
https://github.com/yamagi/vimrc Aber dazu auch gleich eine Warnung. jeder Mensch ist anders, er arbeitet anders, hat andere Workflows, etc. Daher sollte man niemals eine vimrc übernehmen, sich lediglich inspirieren lassen.
Vim hat auch einen eingebauten kleinen Dateimanager.
Für Dateimanager ist das NERDTree Plugin zu empfehlen:
https://github.com/scrooloose/nerdtree
Nachtrag: Wenn man mit Plugins anfängt, ist man schnell bei dem Thema Pluginmanager. Daran scheiden sich die Geister, es gibt entsprechend viele Möglichkeiten. Für den Anfang (und oft auch für größere Setups) ist allerdings der seit Vim 8.0 integrierte Pluginmanager, der auf dem beliebten Manager "Pathogen" basiert, völlig ausreichend. Wechseln kann man immer noch.
Den Befehl auf eine Funktionstaste mappen, zum Beispiel F2.
Ich würde stattdessen den Leader auf
,
remappen. In Standardeinstellung ist er auf
\
, was auf dem deutschen Layout sehr schwer zu erreichen ist. Dann erhältst du eine komplette zweite Mapping-Ebene, die du mit
,
gefolgt einer beliebigen Tastenfolge erreichen kannst. Als Beispiel:
Code:
let mapleader=","
nmap <Leader>p :!pdflatex %
Schon kannst du pdflatex über
,p
aufrufen und musst nicht auf F2 umgreifen. Außerdem wirst du mit der Zeit viele Mapping sammlen, mit 12 Funktionstasten ist da schnell die Grenze erreicht.