Ich habe mich der Einfachheit halber bisher mit dem Terminal-Editor Nano beschäftigt, da ich jetzt aber auch beruflich in die IT (Linux) wechsle – bei vielen Dingen hilft ein professioneller Editor am Terminal einfach mehr. In diesem Beitrag sehen wir uns diesen Editor namens Vim etwas genauer an – installiert ist die Software unter auf Debian basierenden Linux-Distributionen ohnehin automatisch. Ist nur das ältere Vi installiert, installieren Sie die Software ganz einfach über die Paket-Verwaltung durch das Paket „vim„.

Vim nutzen

Starten wir ganz einfach einmal, ich werde eine neue Datei im aktuellen Verzeichnis anlegen – die Datei nenne ich jetzt der Einfachheit halber „neue-datei.txt„:

vim neue-datei.txt

Man muss die Datei natürlich nicht unbedingt im aktuellen Verzeichnis erstellen, Sie können einfach auch gleich den Pfad zur Datei angeben – möchte man eine schon bestehende Datei erstellen, gibt man einfach den Pfad zur Datei und den Namen der Datei an – Beispiel:

vim /etc/fstab

Nun, bleiben wir bei meiner neu angelegten Datei – diese wird erst erstellt, wenn man Vim den entsprechenden Befehl gibt. Jetzt aber, wollen wir die Datei erst einmal mit Text befüllen – klappt nicht, Sie können in die Tasten hauen wie Sie wollen, der Editor macht nichts. Ist bereits Text in der Datei vorhanden, können Sie zwar mit den Pfeiltasten durch die Gegend Cursorn, mehr geht aber nicht.
Um schreiben zu können, drücken Sie die Taste „i“ (für insert). Am unteren Fensterrand erscheint auch ein „— EINFÜGEN —„, dies bedeutet wir können unseren Text schreiben:

Warum ist dies so? Vim hat mehrere Modi – einen zum Suchen, einen zum Einfügen und einen Befehlsmodus, sowie einen normalen Modus. Öffnen wir mit Vim eine Datei, befinden wir uns im normalen Modus – dieser dient dazu, mit wenigen Tasten möglichst schnell durch die Datei zu navigieren. Wir kennen schon den Modus zum Einfügen – aus dem normalen Modus gelangen wir in diesen mit der Taste „i„, hier können wir schreiben. Mit der Taste „Esc“ gelangen wir aus jedem Modus zurück in den normalen Modus.

Im Befehlsmodus (normalen Modus) können wir Vim (und natürlich auch Vi) Befehle geben – hierzu drückt man erst einmal die Taste „:„, der Doppelpunkt erscheint jetzt ganz unten links – dies bedeutet Vim wartet auf den Befehl. Soll Vim den bisherigen Text erst einmal nur speichern, gibt man „w“ ein und bestätigt mit Eingabe. Wir können Vim aber auch gleich sagen, er soll die bisherigen Eingaben speichern und den Editor beenden – zum Beenden drückt man die Taste „q„, also „wq„.

Zurück zum Einfügen-Modus, in diesen gelangen wir nicht nur mit der Taste „i“ – folgende Möglichkeiten gibt es:

  • i – Text, den man schreibt, wird vor dem Cursor eingefügt.
  • I – (großes i) der Cursor springt an den Beginn der aktuellen Zeile.
  • a – Text, den man schreibt, wird nach dem Cursor eingefügt.
  • A – der Cursor springt an das Ende der aktuellen Zeile.
  • o – eine neue Zeile wird unter der aktuellen Cursor-Position angelegt.
  • O – eine neue Zeile wird über der aktuellen Cursor-Position angelegt.

Weiter können wir den Cursor im Befehlsmodus mit folgenden Tasten bewegen – um dann etwa an dieser Stelle mit „i“ (oder eine der obigen Tasten) an dieser Stelle in eine Einfügen-Modus zu kommen:

  • gg – den Cursor an den Beginn der Datei legen.
  • G – den Cursor an das Ende der Datei legen.
  • 0 – an den Beginn der aktuellen Zeile wechseln.
  • $ – an das Ende der aktuellen Zeile wechseln.
  • f N – springt zum nächsten durch „N“ angegebenen Zeichen.
  • w – der Cursor springt ein Wort weiter.
  • e – springt zum Ende des aktuellen Wortes.
  • b – springt ein Wort zurück.
  • ( – Cursor an den Beginn des aktuellen Satzes legen.
  • ) – Cursor an den Beginn des nächsten Satzes legen.

Im Befehlsmodus können wir natürlich auch suchen:

  • /Begriff – nach einem Begriff suchen.
  • ?Begriff – suchen in der umgekehrten Reihenfolge.
  • * – springt zum nächsten Vorkommen des Wortes, das unter dem Cursor liegt.
  • # – wie „*„, nur zurück.
  • n – zum nächsten Treffer gehen.
  • N – einen Treffer zurück.

Im Befehlsmodus kann man auch kopieren und einfügen.

  • y – die komplette aktuelle Zeile unter dem Cursor kopieren.
  • d – die komplette aktuelle Zeile unter dem Cursor löschen.
  • p – Kopiertes einfügen.
  • yw – das komplette Wort ab dem Zeichen unter dem Cursor kopieren.
  • y0 – die komplette Zeile zurück bis zum Beginn der Zeile ab dem Cursor kopieren.
  • x – löscht das Zeichen unter dem Cursor.
  • ~ – ändert das Zeichen unter dem Cursor in groß / klein.
  • u – macht die letzte Änderung rückgängig.
  • U – macht alle Änderungen in der aktuellen Zeile rückgängig.

Mit „v“ gelangt man in den visuellen Modus – bewegt man hier den Cursor auf ein Wort und drückt „w“ wird dieses ab der Cursor-Position markiert, mit „s“ die Zeile. Mit den Tasten oben kann man Kopiertes wieder markieren. Mit „Esc“ gelangt man wieder zurück, …

Vi / Vim können noch viel mehr, unter anderem auch mit Makros umgehen – mehr dazu etwa unter Grundwissen.de.

Vim anpassen

Vim ist in der Standardinstallation recht schmucklos und hat nur die nötigsten Funktionen. Der Editor lässt sich jedoch über die Datei „.vimrc“ anpassen – diese Datei müssen Sie von Hand in Ihrem Home-Verzeichnis anlegen, die Datei ist natürlich versteckt. Gleich einmal am Terminal und auch öffnen und bearbeiten:

vim .vimrc

Weiters finden Sie nach dem ersten Start der Software in Ihrem Home-Verzeichnis ein verstecktes Verzeichnis namens „.vim“ – hier legen Sie die weiteren Unterverzeichnisse „autoload„, „backup„, „colors“ und „plugged“ an – ebenfalls gleich am Terminal:

mkdir -p ~/.vim ~/.vim/autoload ~/.vim/backup ~/.vim/colors ~/.vim/plugged

Jetzt gehen wir an die Grundkonfiguration der Software – wir fügen der Datei folgende Zeilen hinzu:

" Deaktivieren Sie die Kompatibilität mit vi, was zu unerwarteten Problemen führen kann.
set nocompatible

" Typdateierkennung aktivieren. Vim kann versuchen, den verwendeten Dateityp zu erkennen.
filetype on

" Plugins aktivieren und Plugin für den erkannten Dateityp laden.
filetype plugin on

" Laden Sie eine Einzugsdatei für den erkannten Dateityp.
filetype indent on

Jetzt aktivieren wir das Syntax-Highlighting:

" Syntax-Highlighting aktivieren
syntax on

Für die bessere Übersicht aktivieren wir Zeilennummern:

" Fügen Sie jeder Zeile auf der linken Seite Zahlen hinzu.
set number

So sieht die Konfigurationsdatei etwa bisher aus:

Jetzt lassen wir uns optisch besser anzeigen, wo sich der Cursor befindet:

" Cursorlinie unter dem Cursor horizontal hervorheben.
set cursorline

" Cursorlinie unterhalb des Cursors vertikal hervorheben.
set cursorcolumn

Der Editor sieht jetzt so aus:

Jetzt einige weitere sinnvolle Verbesserungen:

" Stellen Sie die Verschiebungsbreite auf 4 Leerzeichen ein.
set shiftwidth=4

" Legen Sie die Tabulatorbreite auf 4 Spalten fest.
set tabstop=4

" Verwenden Sie Leerzeichen statt Tabulatoren.
set expandtab

" Speichern Sie keine Sicherungsdateien.
set nobackup

" Lassen Sie den Cursor beim Scrollen nicht unter oder über N Zeilen scrollen ([i]"N" ersetzen Sie durch die passende Zahl - hier etwa 10[/i])
set scrolloff=10

" Zeilen nicht umbrechen. Lassen Sie lange Linien so weit gehen, wie die Linie geht.
set nowrap

" Beim Durchsuchen einer Datei werden übereinstimmende Zeichen während der Eingabe schrittweise hervorgehoben.
set incsearch

" Großbuchstaben bei der Suche ignorieren.
set ignorecase

" Überschreiben Sie die Option "ignorecase", wenn Sie nach Großbuchstaben suchen. Damit können Sie gezielt nach Großbuchstaben suchen.
set smartcase

" Teilbefehl anzeigen, den Sie in der letzten Zeile des Bildschirms eingeben.
set showcmd

" Zeigen Sie in der letzten Zeile den Modus an, in dem Sie sich befinden.
set showmode

" Passende Wörter während einer Suche anzeigen.
set showmatch

" Verwenden Sie Hervorhebungen, wenn Sie eine Suche durchführen.
set hlsearch

" Stellen Sie die Befehle zum Speichern im Verlauf ein. Standard ist 20.
set history=1000

Wir wollen uns Befehle vervollständigen lassen:

" Aktivieren Sie das Menü zur automatischen Vervollständigung, nachdem Sie die Tab-Taste gedrückt haben.
set wildmenu

" Lassen Sie Wildmenu sich ähnlich wie die Bash-Vervollständigung verhalten.
set wildmode=list:longest

" Es gibt bestimmte Dateien, die wir niemals mit Vim bearbeiten möchten. Wildmenu ignoriert Dateien mit diesen Erweiterungen.
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx

Sie müssen Vim übrigens nicht neu starten, um die Einstellungen zu übernehmen – es genügen folgende beiden Befehle innerhalb von Vim:

:w
:source ~/.vimrc

Wir können längere Dateien zusammenfalten und wieder auseinander nehmen (Abschnitte):

" PLUGINS ---------------------------------------------------------------- {{{

" Plugin code goes here.

" }}}


" MAPPINGS --------------------------------------------------------------- {{{

" Mappings code goes here.

" }}}


" VIMSCRIPT -------------------------------------------------------------- {{{

" This will enable code folding.
" Use the marker method of folding.
augroup filetype_vim
    autocmd!
    autocmd FileType vim setlocal foldmethod=marker
augroup END

" More Vimscripts code goes here.

" }}}


" STATUS LINE ------------------------------------------------------------ {{{

" Status bar code goes here.

" }}}

Jetzt können wir mit zM alle Falten schließen, mit zR alle Falten öffnen. Mit zo öffnen wir eine Falte unter dem Cursor, mit zc schließen wir eine solche.

Für Plugins haben wir schon zu Beginn die nötigen Verzeichnisse erstellt. Statt lange selbst zu basteln, um Plugins zu installieren – installieren wir gleich einmal das Plugin Vim-Plug. Mit diesem Plugin können wir Plugins schnell und einfach installieren.

Hierzu muss unter auf Debian basierenden Linux-Distributionen über die Paket-Verwaltung das Paket „curl“ installiert sein:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Jetzt brauchen Sie nur noch die nötige Konfiguration einzufügen:

" PLUGINS ---------------------------------------------------------------- {{{
call plug#begin('~/.vim/plugged')




call plug#end()

" }}}

Die freien Zeilen dienen dazu nur noch die installierten Plugins einzutragen – dies geschieht in der Syntax:

Plug 'Plugin'

Ich möchte beispielsweise die Plugins von GitHub – Nerdtree und GitHub – ALE installieren. Dazu sehe ich mir die Seiten an – für beide Seiten gibt man den GitHub-Nutzer und die Software an, in diesem Fall:

call plug#begin('~/.vim/plugged')
                               
     Plug 'dense-analysis/ale' 
                               
     Plug 'preservim/nerdtree'                                                                                                        
                               
call plug#end()               
                               
" }}}         

Sie können jedes Plugin hier eintragen, so viele Sie wollen – eine Suche auf GitHub bringt Ergebnisse ohne Ende. Nachdem die Plugins eingetragen wurden, speichern Sie die Konfiguration mit:

:wq

Anschließend starten Sie in Vim den Befehl:

:PlugInstall

Den Rest erledigt das zuvor installierte Plugin automatisch.

Farbschemata für Vim hinzufügen

Auch Farbschemata für Vim lassen sich installieren – solche finden sich haufenweise im Internet, etwa unter Vim Color Schemes. Meist sind diese anschließend auf GitHub zu finden, ich wechsle ganz einfach auf dem Terminal in das Verzeichnis „/.vim/colors/“ und lade das Schemata herunter. Zum Beispiel für das Schemata Vim Substrata:

curl -o vim-substrata.vim https://github.com/arzg/vim-substrata.git

Sie können Schemata installieren, so viele Sie wollen und zwischen diesen wechseln, einfach innerhalb von Vim etwa:

:colorscheme vim-substrata

Die Statusleiste von Vim anpassen

Nehmen wir ein bisschen weitere Konfiguration an der Statusleiste vor:

" STATUS LINE ------------------------------------------------------------ {{{

" Statuszeile löschen, wenn vimrc neu geladen wird.
set statusline=

" Statuszeile links.
set statusline+=\ %F\ %M\ %Y\ %R

" Verwenden Sie eine Trennwand, um die linke Seite von der rechten Seite zu trennen.
set statusline+=%=

" Statuszeile rechts.
set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%%

" Zeigen Sie den Status in der vorletzten Zeile an.
set laststatus=2

" }}}

Schon ist die Statuszeile angepasst:

Schreibe einen Kommentar

8 Reaktionen

  1. Danke für die ausführliche Anleitung.
    Ich habe aber noch einen Tipp für die .vimrc:

    “ Springe zur Cursor-Position beim Editieren einer Datei an der die
    “ Datei zuletzt verlassen wurde
    if has(„autocmd“)
    autocmd BufReadPost * if line(„‚\““) | exe „normal `\““ | endif endif “ has („autocmd“)

Neue Themen im Forum
[gelöst]Ubuntu 24.04 ab 28.04.24Mir ist nicht bekannt das bei Ubuntu die Schritte alle zwei Jahre … Weiterlesen
ddterm - Another Drop Down Termin …gerade gefunden und installiert, finde ich praktisch: https://g … Weiterlesen
GImageReader Texterkennung Grafis …Ein sehr gutes Programm, das ich häufig benütze, wenn ich aus Bild … Weiterlesen
Kategorien im Wiki
WIKI-Beiträge des Monates

Die Beiträge des Monates finden Sie im Kalender unter den blau markierten Tageszahlen.

September 2023
M D M D F S S
 123
45678910
11121314151617
18192021222324
252627282930  
Archive