vim
Schlüsselzuordnungen in Vim
Suche…
Einführung
Durch die Aktualisierung von Vim-Tastenzuordnungen können Sie zwei Arten von Problemen lösen: Erneutes Zuweisen von Tastenbefehlen zu Buchstaben, die einprägsamer oder zugänglicher sind, und Erstellen von Tastenbefehlen für Funktionen, die keine haben. Hier erfahren Sie mehr über die verschiedenen Arten, wie Sie Tastenbefehle zuordnen und den Kontext, auf den sie sich beziehen (z. B. Vim-Modi).
Grundlegende Zuordnung
Übersichtskarte
Eine Schlüsselsequenz kann in einer anderen Tastenfolge erneut abgebildet wird eine der mit den map
Beispielsweise verlässt die folgende typische map
den Einfügemodus, wenn Sie j k in schneller Reihenfolge drücken:
:inoremap jk <Esc>
Kartenoperator
Es gibt mehrere Varianten von :map
für verschiedene Modi.
Befehle | Modi |
---|---|
:map :noremap :unmap :noremap :unmap | Normaler, visueller und vom Bediener anstehender Modus |
:map! , :noremap! , :unmap! | Einfügen und Befehlszeilenmodus |
:nmap :nnoremap :nunmap :nnoremap :nunmap | Normaler Modus |
:imap :inoremap :iunmap :inoremap :iunmap | Einfüge- und Ersetzungsmodus |
:vmap :vnoremap :vunmap :vnoremap :vunmap | Sicht- und Auswahlmodus |
:xmap :xnoremap :xunmap :xnoremap :xunmap | Visueller Modus |
:smap :snoremap :sunmap :snoremap :sunmap | Auswahlmodus |
:cmap :cnoremap :cunmap :cnoremap :cunmap | Befehlszeilenmodus |
:omap :onoremap :ounmap :onoremap :ounmap | Betreiber ausstehender Modus |
Normalerweise sollten Sie die :noremap
Varianten verwenden ; Dies macht das Mapping gegen Remapping und Rekursion immun.
Befehl map
- Sie können alle Zuordnungen anzeigen mit
:map
(oder einer der oben genannten Variationen). - Um die aktuelle Zuordnung für eine bestimmte Tastenfolge anzuzeigen, verwenden Sie
:map <key>
wobei<key
> eine Tastenfolge ist - Sondertasten wie Esc werden mit der speziellen Notation
<>
wie<Esc>
. Die vollständige Liste der Schlüsselcodes finden Sie unter http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes -
:nmapclear
- Alle Karten im:nmapclear
-
:nunmap
- Hebt eine normale Moduszuordnung auf - Sie können durch eine Änderung der die maximale Zeit zwischen den Tasten einer Sequenz konfigurieren
timeout
undttimeout
Variablen
Beispiele
-
imap jk <Esc>
:jk
im Einfügemodusjk
eingeben,imap jk <Esc>
Sie zum normalen Modus zurück -
nnoremap tt :tabnew<CR>
tt
im normalen Modus eingeben, wird eine neue Registerkarte geöffnet -
nnoremap <Cj> <Cw>j
:<Cj>
im normalen Modus<Cj>
, springen Sie zum Fenster darunter und nach links -
vmap <Cc> \cc
:vmap <Cc> \cc
im visuellen Modus<Cc>
eingeben, wird\cc
(NERDCommenter-Befehl zum Kommentieren der Zeile). Da dies auf einem Plugin-Mapping beruht, können Sie:vnoremap
hier nicht verwenden!
Lesen Sie hier weiter
Map Leader-Tastenkombination
Der Leiterschlüssel kann zum Erstellen eines Mappings mit einer Schlüsselbindung verwendet werden, die vom Endbenutzer überschrieben werden kann.
Der Leader ist standardmäßig der \ key. Um es zu überschreiben, muss der Endbenutzer :let g:mapleader='somekey(s)'
ausführen :let g:mapleader='somekey(s)'
bevor Sie das Mapping definieren.
In einem typischen Szenario wird der Mapleader in .vimrc
, und Plugins verwenden <Leader>
im Keybinding-Teil ihrer Zuordnungen, um sie anpassbar zu machen.
Im Plugin würden wir Zuordnungen definieren mit:
:nnoremap <Leader>a somecomplexaction
Dies würde die Somecomplexaction- Aktion der Tastenkombination \ + a zuordnen .
Die eine Aktion ohne Führer nicht ändert.
Es ist auch möglich, <Plug>Mappings
zu verwenden, um mehr Spielraum für die Anpassung der Plugins-Keybindings zu lassen.
Abbildung des grundlegenden Mappings (praktische Abkürzungen).
In den meisten Texteditoren lautet die Standardverknüpfung zum Speichern des aktuellen Dokuments Strg + S (oder Cmd + S unter macOS).
Vim verfügt nicht standardmäßig über diese Funktion, dies kann jedoch zur Vereinfachung der Zuordnung zugeordnet werden. Die folgenden Zeilen werden in der .vimrc
Datei .vimrc
.
nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>
Der Befehl nnoremap
ordnet Ctrl + s zu :w
(aktuellen Inhalt in Datei schreiben) zu, während der inoremap
Befehl den Befehl Strg + S zu :w
ordnet und zum Einfügemodus zurückkehrt ( <co>
für einen Befehl und in den normalen Modus kehrt anschließend in den Einfügemodus zurück, ohne die Cursorposition zu ändern, was andere Lösungen wie <esc>:w<cr>a
nicht gewährleisten können).
Ähnlich,
" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>
" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>
" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>
PS: Es muss jedoch beachtet werden, dass Ctrl + S während der Verwendung von ssh (oder PuTTY) möglicherweise nicht wie erwartet funktioniert. Die Lösung dieses Problems ist nicht in den Anwendungsbereich dieses Dokuments, aber gefunden werden kann hier .