Auf Linux- und Mac-Rechnern benötige ich recht oft einen Editor, um schnell diverse Dateien zu bearbeiten. I.d.R. Regel starte ich dafür allerdings nicht gleich eine ganze IDE, sondern nutze einen einfachen textbasierten Editor: Vim IMproved.
Wie bei jedem Stück Software, welches weniger auf Gewohnheiten und mehr auf Effizienz setzt, ist es auch bei VIM so, dass du als Neu-Einsteiger zunächst die grundsätzliche Bedienung von VIM kennenlernen solltest.
Darum geht es in diesem Beitrag allerdings nicht. Es geht um ein paar nützliche Erweiterungen, wie man den Editor gemäß der eigenen Ansprüche pimpen kann.
.vimrc – Die Konfiguration
VIM wird über die lokale Dotfile „.vimrc“ konfiguriert und eingestellt. Hier können bereits per default einige Einstellungen angepasst werden (Tabstops, grundsätzliches syntax highlighting, Zeilennummern, etc.).
Wie bei allen Konfigurations-Dateien empfiehlt es sich natürlich auch hier, diese möglichst sauber zu halten und auch nur das zu behalten, was du auch benötigst. Dokumentation ist hier im Übrigen auch eine gute Idee – so dass man auch später noch weiß, was mit der entsprechenden Option in der Konfigurationsdatei erreicht werden sollte.
So sieht meine .vimrc-Datei momentan aus und ich nutze diese Konfiguration bereits seit einigen Jahren nahezu unmodifiziert (eigentlich kam nur vor ca. einem Jahr das Syntax-Highlighting für i3-Konfigurationsdateien dazu).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 runtime! archlinux.vim
if !has('nvim')
set ttymouse=xterm2
endif
syntax on
filetype plugin on
set number
set ruler
set tabstop=2
set shiftwidth=2
set encoding=utf-8
set laststatus=2
set clipboard=unnamedplus
set ignorecase
set smartcase
" via Escape in den NORMAL-Mode zurück
tnoremap <Esc> <C-\><C-n>
" 256 colors
set t_Co=256
" NERDTree via F6 ein- und ausschalten
map <F6> :NERDTreeToggle<CR>
" Plugins
set nocompatible
filetype off
" runtimepath für Vundle und Initialisierung
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" Vundle verwaltet sich selbst:
Plugin 'VundleVim/Vundle.vim'
Plugin 'jiangmiao/auto-pairs'
Plugin 'scrooloose/nerdtree'
Plugin 'davidhalter/jedi-vim'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'vim-syntastic/syntastic'
Plugin 'ervandew/supertab'
Plugin 'mboughaba/i3config.vim'
Plugin 'morhetz/gruvbox'
Plugin 'vim-scripts/twilight256.vim'
Plugin 'itchyny/lightline.vim'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Bundle 'gabrielelana/vim-markdown'
Plugin 'w0rp/ale'
Plugin 'honza/vim-snippets'
Plugin 'ryanoasis/vim-devicons'
" Alle Plugins müssen vor dieser Zeile stehen!
call vundle#end()
filetype plugin indent on
colorscheme twilight256
" Plugins-Konfiguration
"devicons
let g:webdevicons_enable = 1
let g:webdevicons_enable_nerdtree = 1
let g:webdevicons_enable_airline_statusline = 1
let g:webdevicons_enable_ctrlp = 1
"syntastic
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
"jedi-vim
let g:jedi#completions_command = "<C-Tab>"
set noshowmode
set guifont=Source\ Code\ Pro\ 14
aug i3config_ft_detection
au!
au BufNewFile,BufRead ~/.config/i3/config set filetype=i3config
aug end
Vundle – Plugins installieren und aktuell halten
Wenn du jetzt einfach die o.g. Konfigurationsdatei .vimrc so in dein Benutzerverzeichnis kopierst und VIM startest, wird VIM Fehlermeldungen ausgeben und nicht (alle) oben genannten Funktionen ausführen. Dies liegt daran, dass ein Großteil meiner Konfiguration aus Plugins besteht, die natürlich zunächst installiert werden müssen. Ich nutze hierzu den Plugin-Manager Vundle.
Vundle ist mit dem Kommando
1 | git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim |
Startest Du jetzt nochmals VIM und gibst das Kommando
1 | :PluginInstall |
In den folgenden Abschnitten stelle ich noch ein paar der Plugins vor, die ich in meiner Konfiguration nutze.
NERDTree
Mit NERDTree kann innerhalb von VIM eine Art Datei-Browser/-Explorer angezeigt werden. Nach einer normalen Installation steuerst du das Plugin über VIM-Kommandos. Um dies etwas weiter zu vereinfachen, habe ich den Toggle-Befehl in meiner o.g. Konfiguration auf die F6-Taste gelegt. So kann man den Verzeichnis-Baum via F6 einblenden, die entsprechende Datei auswählen und mit F6 auch wieder ausblenden. Funktioniert hervorragend und diese Funktion möchte ich auch nicht mehr missen. Insbesondere, wenn ich verschiedene Dateien in einem Verzeichnis hintereinander bearbeite(n muss).
(Web-)Devicons
Dieses Plugin sorgt dafür, dass beispielsweise im NERDTree die Dateien mit entsprechenden Icons dargestellt werden (siehe Screenshot oben).
ryanoasis/vim-devicons: https://github.com/ryanoasis/vim-devicons
w0rp/ale
Asynchronous Lint Engine: https://github.com/dense-analysis/ale
Ein „Aufpasser“: Das Plugin prüft automatisiert den Code im Editor auf Syntax- und Semantik-Fehler und gibt Vorschläge für besseren Codestyle und/oder zeigt direkt Syntax-Fehler an.
Optional kann auch eingestellt werden, dass Syntax-Fehler automatisch beim Speichern gefixt werden. Diese Option habe ich i.d.R. allerdings nicht aktiv (auch in anderen IDE nicht).