NERDBUDE

[ code. keyboards. terminals. cyber. ]

[HOWTO] [WHOAMI] [PODCAST] [ENGLISH]

VIM V

Konfiguration

Da wir Vim nun einigermaßen benutzen können, schrauben wir mal ein wenig an Vim herum. Die zentrale Configfile ist die .VIMRC. Hier drin wird das komplette verhalten von Vim konfiguriert, Plugins die beim Start geladen werden sollen, Syntaxhighlighting, das Colorscheme, Keymapping usw. Die .VIMRC ist in der Vim-eigenen Scriptsprache VIMSCRIPT geschrieben.
Also benutzen wir Vim umd die .VIMRC zu bearbeiten:

  vim ~/vim/.vimrc

Wie bei den meisten Linux Tools wird hier das Verhalten, Aussehen und die Erweiterung um Funktionen von Vim geregelt und konfiguriert. Die .VIMRC ist menschenlesbar geschrieben und kann dementsprechend leicht modifiziert werden (vorrausgesetzt man kennt die Variablen). Hier mal ein paar einfache Einträge die, die Benutzung von Vim deutlich schöner und angenehmer machen.

  syntax on (aktiviert Syntaxhighlinghting)
  set number (aktiviert Linenumbers)
  colo iwtb (nutzt das iwtb Colorscheme)
  filetype plugin on (Vim erkennt anhand der Endung welches Highlighting)
  set laststatus 2 (aktiviert Statusleiste)
  set history=1000 (Speichert die letzten 1000 Commands die benutzt wurden)

Mit den 6 Einträgen lässt sich Vim schon besser benutzen und sieht deutlich besser aus und nicht mehr S/W. Das IWTB Colorscheme gibts im übrigen HIER.
Das sind allerdings einfache Erweiterungen bzw. Optionen die Vim von Haus aus mitbringt - also quasi Basic configs. Hier brauchen keine extra Plugins installiert werden. Wenn wir nun aber Plugins benutzen wollen, braucht es einen Eintrag für den verwendeten Pluginmanager (in meinem Fall Pathogen). Auf Plugins selber bin ich bereits in Part IV der kleinen Vim Reihe hier.
Um Pathogen zum Pluginmanager zu machen braucht es folgenden .VIMRC Eintrag:

  execute pathogen#infect()
  call pathogen#infect()

... und schon fungiert Pathogen als Pluginmanager.

KEYMAPPING

In der .VIMRC lassen sich auch Keys bzw. Tasten neu mappen. Der ESC Key bspw. als Exit aus den Modes, stammt noch von Keyboards der ADM-3A Rechner auf denen vi entwickelt wurde. Hier war ESC direkt neben "Q" also deutlich einfacher zu erreichen als bei moderneren Keyboards wo ESC in die Leiste mit Funktions-Keys gerutscht ist. Warum also ESC nicht auf eine andere Taste mappen damit schneller zwischen den Modes gewechslt werden kann.
Dazu reicht folgender Eintrag in der .VIMRC:

  inoremap jj <ESC>

Mit diesem Eintrag kann der INSERT Mode mit der Tastenfolge "jj" verlassen werden. Hier macht es natürlich Sinn eine Zeichenfolge zu nehmen die nicht oft vorkommen in geschriebenem Text. Die Tastenfolge "er" würde ziemlich schnell nerven.
Der grundlegende Syntax des Remappings ist folgender:

  map_mode <what_you_type> <what_is_executed>

Für den map_mode gibt es drei Optionen:
- inoremap (mapped keys im INSERT Mode)
- nnoremap (mapped keys im NORMAL Mode)
- vnoremap (mapped keys im VISUAL Mode)

Mit diesen Optionen können die Keys sehr präzise definiert werden.
Also am besten mit Vim rumspielen und darauf achten wo angepasst und verbessert werden kann.

Wer das NERDtree Plugin nutzt kann sich bspw. das ":NERDtree" getippe sparen und NERDtree auf eine der F-Keys mappen:

  nnoremap <F3> :NERDTreeToggle<cr>

Aber nicht nur die Mappings und und Basics werden in der .VIMRC konfiguriert sondern auch das Verhalten von Plugins. Ich benutze das Plugin "startify" - das macht Vim hübsch wenn es ohne File geöffnet wird. In "startify" können zum einen die zu letzt geöffneten Files angezeigt werden aber auch statische links zu häufig genutzten Files, wie zum Beispiel die .VIMRC, xmonad.hs oder die xmobar-configfile - wer krativ ist kann obendrein noch cooles ASCII-Art reinbauen. Was genau "startify" wird in der .VIMRC konfiguriert. Das spart uns eine separate Config-File und das nervige suchen im Nachhinein wenn ihr mal was ändern wollt. Meine "startify" config sieht folgendermaßen aus:

  let g:startify_custom_header = [
  \ '   88  88 888888 888888 88   88 88 ',
  \ '   88  88 88  88 88     88  88  88 ',
  \ '   888888 888888 88     8888    88 ',
  \ '   88  88 88  88 88     88  88     ',
  \ '   88  88 88  88 888888 88   88 88 ',
  \ ]
  
  let g:startify_lists = [
  \ { 'type': 'files',	'header': ['    last modified:'] },
  \ { 'type': 'bookmarks', 'header': ['    bookmarks:'] },
  \ ]
  
  let g:startify_bookmarks = [ {'w': '~/vimwiki/index.wiki'}, {'v': '~/.vimrc'}, {'x': '~/.xmonad/xmonad.hs'}, {'b': '~/.config/xmobar/xmobarrc0'}]

So sieht Vim dann aus wenn es ohne Files zum öffnen, gestartet wird:



Also recht wenig Code für ein ganz schickes Ergebnis.

Statusline

Die Statusline ist ein Feature, das jeder Editor braucht und der/die Endnutzer:in auch braucht - sei es einfach um zu schauen wieviel Zeilen Code ihr geschrieben habt. Die Statusline kann - wer hätte es gedacht - in der .VIMRC konfiguriert werden.
Als erstes wird, wie oben schon beschreiben, die Statusline mit "set laststatus=2" aktiviert und in Vim angezeigt. Die Statusline kann entweder nur links Infos anzeigen, nur Rechts oder Links und Rechts. Der .VIMRC Eintrag sieht dann folgendermaßen aus:

  set statusline+=\ %F\ %M\ %Y\ %R
  set statusline+=%=
  set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%%

Was heißt das ganze Gerümpel nun?
Die Zeile "set statusline+=\ %F\ %M\ %Y\ %R" fängt links an die vergebenen Parameter in die Statuszeile zu schreiben. Die Variablen stehen dabei für:

%F – Zeigt den vollen Pfad zur geöffneten File
%M – Zeigt an ob das File gesaved ist oder nicht
%Y – Dateityp
%R – Zeigt an wenn die File read-only ist

Die nächste Zeile ("set statusline+=%=") die folgt funktioniert als Separator um die Statusline in zwei Teile aufzuteilen.

Danach wird die rechte Seite der Statusline konfiguriert. Das läuft genauso ab wie bei der linken Seite. Das gleiche Anzeigen lassen wie auf der linken Seite macht natürlich wenig Sinn:
Deswegen sieht die nächste Zeile etwas anders aus: "set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%%"

%b – Zeigt das ASCII/Unicode Zeichen unter dem Cursor.
0x%B – Zeigt das Hexadecimal Zeicehn unter dem Cursor.
%l – Zeigt die Zeilennummer in der der Cursor ist.
%c – Zeigt die Splatennummer in der der Cursor ist.
%p%% – Zeigt die Position des Cursor in Prozent.

Für mehr Infos und Parameter lohnt es sich auch immer einen Blick in die Hilfe zu werfen. Dazu kann in Vim (Im NORMAL Mode) mit folgendem Command die Help-File angezeigt werden. Hier am Beispiel der Statusline Helpfile.

  help: statusline

Wie ihr seht lassen sich Basisfunktionen, Colorschemes, Plugins und auch die Statusline bequem in einer File konfigurieren. Das hier ist nur ein winziger Teil der Möglichkeiten die mit der .VIMRC möglich sind. Am einfachsten könnt ihr euch wie immer durch Github oder Gitlab inspieren lassen, wass andere in ihren .VIMRC Files haben und was ihr auch haben wollt. Viel Spaß beim Konfigurieren und rumspielen mit der .VIMRC.



//EOF