vim
Vim konfigurieren
Suche…
Die vimrc-Datei
Die .vimrc
Datei (ausgesprochen Vim-wreck) ist eine Vim-Konfigurationsdatei. Es enthält Befehle, die von Vim bei jedem Start ausgeführt werden.
Standardmäßig ist die Datei leer oder nicht vorhanden. Sie können es verwenden, um Ihre Vim-Umgebung anzupassen.
Um herauszufinden, wo Vim erwartet, dass die Vimrc-Datei gespeichert wird, öffnen Sie Vim und führen Sie Folgendes aus:
:echo $MYVIMRC
Unix: Auf einem Unix-System wie Mac oder Linux heißt Ihre vimrc .vimrc
und befindet sich normalerweise in Ihrem Home-Verzeichnis ( $HOME/.vimrc
).
Windows: Unter Windows heißt es _vimrc
und befindet sich in Ihrem Home-Verzeichnis ( %HOMEPATH%/_vimrc
).
Beim Start sucht Vim an mehreren Stellen nach einer Vimrc-Datei. Das erste, was existiert, wird verwendet, die anderen werden ignoriert. Eine vollständige Referenz finden Sie im :h $MYVIMRC
Dokumentationsartikel.
Welche Optionen kann ich verwenden?
Wenn Sie nicht wissen, welche Optionen Sie verwenden sollen, sind Sie möglicherweise an dem Befehl :options
interessiert.
Dadurch wird ein Split geöffnet, in dem alle Vim-Optionen aufgelistet sind und der aktuelle Wert angezeigt wird. Es gibt 26 Abschnitte, in denen alle Optionen angezeigt werden, die Sie ausprobieren können.
z.B
4 displaying text
scroll number of lines to scroll for CTRL-U and CTRL-D
(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap
...
In einer set nowrap
(zB set nowrap
) können Sie CR drücken, um den Wert set nowrap
(wenn es sich um einen binären Wert handelt). In einer Optionszeile (z. B. wrap long line wrap
) können Sie CR drücken, um auf die Dokumentation für diese Option zuzugreifen.
Dateien und Verzeichnisse
Was auch immer Sie tun, um Vim anzupassen, es sollte NIE außerhalb von $HOME
passieren:
- Unter Linux, BSD und Cygwin ist
$HOME
normalerweise/home/username/
, - Unter Mac OS X ist
$HOME
/Users/username/
, - Unter Windows ist
$HOME
normalerweiseC:\Users\username\
.
Der kanonische Speicherort für Ihr vimrc
und Ihr vim
Verzeichnis befindet sich im Stammverzeichnis dieses $HOME
Verzeichnisses:
auf Unix-ähnlichen Systemen
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directory
unter Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
Das obige Layout funktioniert garantiert jetzt und in der Zukunft.
Vim 7.4 hat es möglich gemacht, Ihre schöne vimrc
in Ihrem vim
Verzeichnis zu behalten. Es ist wirklich eine gute Idee, schon weil es einfacher ist, die Konfiguration zu verschieben.
Wenn Sie ausschließlich 7.4 verwenden, reicht Folgendes aus:
auf Unix-ähnlichen Systemen
$HOME/.vim/vimrc
unter Windows
$HOME\vimfiles\vimrc
Wenn Sie die Vorteile eines in sich geschlossenen vim/
nutzen möchten, aber sowohl 7.4 als auch eine ältere Version oder nur eine ältere Version verwenden möchten, besteht die einfachste und zukunftssicherste Lösung darin, diese Zeile und nur diese Zeile anzugeben:
runtime vimrc
in dieser Datei:
auf Unix-ähnlichen Systemen
$HOME/.vimrc
unter Windows
$HOME\_vimrc
und führen Sie Ihre Konfiguration in $HOME/.vim/vimrc
oder $HOME\vimfiles\vimrc
.
Optionen
Es gibt drei Arten von Optionen:
- boolesche Optionen,
- String-Optionen,
- Anzahl Optionen.
Um den Wert einer Option zu überprüfen,
- Verwendung
:set option?
den Wert einer Option prüfen, - Verwendung
:verbose set option?
zu sehen, wo es zuletzt eingestellt wurde.
Boolesche Optionen einstellen
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
String-Optionen einstellen
set stroption=baz " baz
set stroption+=buzz " baz,buzz
set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz
set stroption= " Unset stroption.
set stroption& " Reset stroption to its default value.
Anzahl Optionen einstellen
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Einen Ausdruck als Wert verwenden
mit Verkettung:
execute "set stroption=" . my_variable
mit
:let
:let &stroption = my_variable
Siehe :help :set
und :help :let
.
Zuordnungen
- Fügen Sie nach den Zuordnungen keine Kommentare ein, da dies zu einem Bruch führt.
- Verwenden Sie
:map <F6>
zu sehen, was in welchem Modus auf<F6>
abgebildet ist. - Verwenden Sie
:verbose map <F6>
um auch zu sehen, wo sie zuletzt zugeordnet wurde. -
:map
und:map!
sind zu generisch. Verwenden Sie:n[nore]map
für Normalmoduszuordnungen,::i[nore]map
für Einfügemodus:x[nore]map
für visuellen Modus usw.
Rekursive Zuordnungen
Verwenden Sie rekursive Zuordnungen nur, wenn Sie beabsichtigen, andere Zuordnungen in Ihren Zuordnungen zu verwenden:
nnoremap b B
nmap <key> db
In diesem Beispiel arbeitet b
im Normalmodus wie B
Da wir b
in einem rekursiven Mapping verwenden, funktioniert das Drücken von <key>
wie dB
und nicht wie db
.
Nicht-rekursive Zuordnungen
Verwenden Sie nicht-rekursive Zuordnungen nur, wenn Sie in Ihren Zuordnungen Standardbefehle verwenden möchten. Dies ist fast immer das, was Sie möchten:
nnoremap <key> db
In diesem Beispiel verwenden wir b
in einem nichtrekursiven Mapping, sodass das Drücken der Taste immer wie db
funktioniert, unabhängig davon, ob wir b
oder nicht.
Befehl aus einem Mapping ausführen
nnoremap <key> :MyCommand<CR>
Mehrere Befehle aus einem Mapping ausführen
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Aufruf einer Funktion aus einem Mapping
nnoremap <key> :call SomeFunction()<CR>
Zuordnen einer <Plug>
-Zuordnung
map <key> <Plug>name_of_mapping
Siehe :help map-commands
, :help key-notation
und :help <plug>
.
Weitere Informationen finden Sie unter Tastenzuordnungen in Vim
Variablen
Wie die meisten Skriptsprachen verfügt Vimscript über Variablen.
Man kann eine Variable mit dem Befehl: :let
:
let variable = value
und lösche es mit :unlet
:
unlet variable
In Vim können Variablen festgelegt werden, indem ihrem Namen ein einzelner Buchstabe und ein Doppelpunkt vorangestellt wird. Plugin-Autoren verwenden diese Funktion, um Optionen nachzuahmen:
let g:plugin_variable = 1
Siehe :help internal-variables
.
Befehle
- Vergessen Sie nicht den Knall, damit Vim diesen Befehl beim nächsten Laden Ihres vimrc überschreiben kann.
- Benutzerdefinierte Befehle müssen mit einem Großbuchstaben beginnen.
Beispiele
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- Siehe
:help user-commands
.
Funktionen
- Vergessen Sie nicht den Knall, damit Vim diese Funktion das nächste Mal überschreiben kann, wenn Sie das Skript neu laden, in dem die Funktion definiert ist.
- Benutzerdefinierte Funktionen müssen entweder mit einem Großbuchstaben (globale Funktionen) oder mit
s:
(Skriptlokale Funktionen) beginnen oder ihnen muss der Name vorangestellt werden, der dem Autoload-Plugin zugeordnet ist, wo sie definiert sind (z. B. in{&rtp}/autoload/foo/bar.vim
könnten wirfoo#bar#functionname()
) definieren. - Um die Parameter in der Funktion verwenden zu können, verwenden Sie
a:parameter_name
. Mit den Auslassungspunkten...
können variadische Funktionen definiert werden. Für den Zugriff auf die Parameter verwenden Siea:000
(Liste aller Parameter) odera:0
(Anzahl der Parameter entsprichtlen(a:000)
),a:1
zuerst unbenannt Parameter und so weiter. - Funktionen können wie
:call MyFunction(param1, param2)
- Jede Zeile in einer Funktion beginnt implizit mit ein
:
, damit alle Befehle Doppelpunkt - Befehle - Um zu verhindern, dass die Funktion im Fehlerfall ihre Ausführung fortsetzt, sollten Sie die Funktionssignatur am besten mit
abort
Beispiel
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Skriptfunktionen
Wenn Sie planen, Ihre Funktion nur in der Datei zu verwenden, in der sie definiert ist (entweder weil Sie eine größere Funktion in kleineren Teilen beschädigt haben oder weil Sie sie in einem Befehl, einem Mapping usw. verwenden), können Sie das Präfix verwenden es mit s:
:, um zu vermeiden, dass Ihr globaler Namespace mit nutzlosen internen Funktionen verschmutzt wird:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
S: Funktionen aus Zuordnungen verwenden
Wenn Ihre lokale Skriptfunktion in einem Mapping verwendet werden soll, müssen Sie sie mit dem speziellen Präfix <SID>
referenzieren:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Siehe :help user-functions
.
Beachten Sie jedoch, dass es seit Vim 7 eine bewährte Methode ist, Mappings, Befehle und Menüs in (ft) -Plugins und Funktionen für das automatische Laden von Plugins zu definieren - mit Ausnahme der Funktionen, die die Plugins beim Laden benötigen. Dies bedeutet, dass heutzutage die Notwendigkeit, lokale Funktionen von Skripts über Zuordnungen aufzurufen, nicht so relevant ist wie zuvor.
Autobefehlsgruppen
- Autocommand-Gruppen sind gut für die Organisation, sie können jedoch auch für das Debugging nützlich sein. Stellen Sie sich diese als kleine Namespaces vor, die Sie nach Belieben aktivieren / deaktivieren können.
Beispiel
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit
" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END
Siehe :help autocommand
.
Conditionals
if v:version >= 704
" Do something if Vim is the right version.
endif
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
Siehe :help has-patch
und :help feature-list
.
Einstellmöglichkeiten
Normalerweise verwenden Sie :set
.vimrc
Sie fest, welche Optionen in Ihrem .vimrc
nach Ihren Wünschen .vimrc
. Es gibt viele Optionen, die geändert werden können.
Zum Beispiel, um Leerzeichen für die Einrückung zu verwenden:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Satzstellung markieren
Aktivieren Sie die Syntaxhervorhebung, wenn das Terminal Farben hat
if &t_Co > 2 || has("gui_running")
syntax on
end
Nachgestellte Leerzeichen und Tabulatoren anzeigen. Das Anzeigen von Registerkarten kann besonders bei der Suche nach Fehlern in Makefiles hilfreich sein.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Farbschemata
Vim verfügt über mehrere vorinstallierte Farbschemata. In Linux werden die mit Vim /usr/share/vim/vim74/colors/
Farbschemas in /usr/share/vim/vim74/colors/
gespeichert (wobei 74 Ihre Versionsnummer ist, mehrere Zeiträume). MacVim speichert sie in /Applications/MacVim.app/Contents/Resources/vim/runtime/colors
.
Farbschemas ändern
Der Befehl colorscheme
wechselt das aktuelle Farbschema.
Um zum Beispiel das Farbschema auf "Robokai" zu setzen:
:colorscheme robokai
Das Standardfarbschema hat den kreativen Namen default
, um es wieder zu verwenden
:colorscheme default
Um alle derzeit installierten Farbschemata :colorscheme
, geben Sie :colorscheme
gefolgt von Leerzeichen und dann entweder Tab oder Strg d .
Farbschemas installieren
~/.vim/colors/
Benutzer installierte Farbschemata können in ~/.vim/colors/
. Wenn ein Farbschema zu diesem Verzeichnis hinzugefügt wird, wird es als Option für den Befehl colorscheme
.
Um neue Farbschemata zu finden, gibt es Standorte wie Vimcolors, die verschiedene Farbschemata enthalten. Es gibt auch Tools wie vim.ink und Vivify , die Sie beim Erstellen Ihrer eigenen Farbschemas unterstützen, oder Sie können sie von Hand erstellen.
Zeilenaufzählung umschalten
Um es zu aktivieren, geben Sie Folgendes ein:
:set number
oder :set nu
.
Zu deaktivieren - geben Sie ein:
:set nonumber
oder :set nonu
.
Um die Aufzählung relativ zur Cursorposition zu aktivieren, geben Sie Folgendes ein:
:set relativenumber
.
Um die Aufzählung relativ zur Cursorposition zu deaktivieren, geben Sie Folgendes ein:
:set norelativenumber
.
Hinweis: Um zu ändern, ob in der aktuellen Zeile die tatsächliche Zeilennummer oder 0
:set nonumber
Befehle :set number
und :set nonumber
, während das Attribut relativenumber
aktiv ist.
Plugins
Vim-Plugins sind Addons, mit denen die Funktionalität von vim geändert oder erweitert werden kann.
Vimawesome bietet eine gute Liste von Plugins