Wie kann ich mich in der Vim-Befehlszeile bewegen?

69

Wenn Sie einen Befehl in Vim eingeben (ich meine, Sie haben damit begonnen :und arbeiten in der Leiste am unteren Bildschirmrand), gibt es eine andere Möglichkeit, den Cursor zu bewegen, als auf die Pfeiltasten zu tippen? Können Sie es insbesondere an den Anfang, das Ende, n Zeichen zurück oder ein Wort zurück verschieben?

Ethan
quelle

Antworten:

63

Art

:h cmdline-editing

für Details. Ich liste einige der interessanten Befehle ohne Pfeil auf, die etwas Ähnliches tun, wie Sie es möchten.

  • ctrl- B: Cursor zum Anfang der Befehlszeile
  • ctrl- E: Cursor zum Ende der Befehlszeile
  • ctrl- W: Lösche das Wort vor dem Cursor
  • ctrl- U: Entfernen Sie alle Zeichen zwischen der Cursorposition und dem Zeilenanfang
Alok Singhal
quelle
Danke, das ist großartig. Ich habe dieses Hilfedokument durchsucht und sehe keinen Weg, mich mit Worten hin und her zu bewegen. Wissen Sie, ob das verfügbar ist?
Ethan
1
Die Dokumentation besagt, dass Umschalt + links und Umschalt + rechts verwendet werden, um ein Wort vor und zurück zu bewegen. Es hat auch ein Beispiel, wie man im Befehlszeilenmodus <Esc>ban Shift + Left (und so weiter) bindet ::cnoremap <Esc>b <S-Left>
Alok Singhal
1
Das Key Mapping sieht sehr nach Emacs aus :)
Jeffrey Jose
1
Wenn Sie möchten, dass Ihre Vim-Befehlszeilenbearbeitung eher Emacs oder Bash ähnelt, lesen Sie die Neuzuordnungen in:help emacs-keys
ein bezahlter Nerd
97

Tippen Sie im Befehlszeilenmodus (kurz danach ) auf Ctrl+ . Dort erhalten Sie ein Befehlszeilenfenster, das als normales VIM-Fenster (hjkl usw.) bearbeitet und navigiert werden kann.F:

Siehe :h cmdline-windowfür Details.

Maxim Kim
quelle
14
Wow, das ist nichts weniger als das Leben, das mir offenbart.
BimoZX
8
Und Ctrl-Cgeht.
Walf
2
Dies ist ein Juwel. :qscheint dich auch rauszuholen.
Sudo Make Install
8
Warum ist diese Information so schwer zu finden? Ich möchte dich umarmen.
Jojo
7
Gleiches gilt für die Suchzeile! Fantastisch!
Architektonische
26

Um zu Maxim Kims Antwort hinzuzufügen,

In der Normal Mode..

q: -> cmdline-Fenster für Befehle

q/ -> cmdline-Fenster für die Vorwärtssuche

q? -> cmdline-Fenster für die Rückwärtssuche

Ctrl-Coder <CR>bringt dich aus dem cmdline-Fenster

Jeffrey Jose
quelle
5
Manchmal schlägt meine eine Hand ungewollt die andere und ich tippe versehentlich q:statt :q. Ich brauchte Ewigkeiten, um herauszufinden, was ich tippte, um in das seltsame Befehlsfenster zu gelangen (zumindest war es intuitiv, wie ich daraus herauskam).
Andrew Marshall
Nach q:cmdline öffnen sich Fenster für Befehle. Sie können durch die Befehle (hjkl) scrollen und den Befehl <CR>ausführen, an dem Sie sich gerade befinden. <Ctrl-C>kann verwendet werden, um den aktuellen Befehl zu bearbeiten, an dem Sie sich befinden. Sie können jeden Befehl auch innerhalb des Fensters bearbeiten, indem Sie in den Einfügemodus wechseln (drücken Sie i im cmdline-Fenster), einen Befehl bearbeiten und dann<CR>
Ambareesh
16
  • ctrl+ left arrow: ein Wort zurückbewegen
  • ctrl+ right arrow- ein Wort vorwärts bewegen
  • ctrl+ b- zurück zum Zeilenanfang
  • ctrl+ e- gehe zum Ende der Zeile
  • ctrl+ w- entferne ein Wort vor dem Cursor
  • ctrl+ u- Linie entfernen
  • ctrl+ f- Wenn Sie mehr Bearbeitungsleistung benötigen, ctrl+ verwenden fSie Ihren Befehl im normalen Modus. Wenn Sie beispielsweise 5 Zeichen nach links verschieben möchten, verwenden Sie ctrl+ fund dann 5h.
Kernix
quelle
1
Auf dem Mac wird Ctrl + left arrowder gesamte Desktop verschoben. Ich habe es deaktiviert, aber Ctrl + left arrowden Cursor nach links von der Zeile bewegt.
Vitaly Zdanevich
ctrl+shift+left/right arrowfunktioniert für mich auf macos mit iterm2.
apostl3pol
3

nnoremap q; q:um das Tippen zu erleichtern. usr_20.txt und cmdline.txt enthalten alle nützlichen Infos.

qeatzy
quelle
danach q;erreichen Sie das gleiche :dann<C-f>
qeatzy
2

Sie können tatsächlich Ihre eigenen Bewegungstasten hinzufügen. Zum Beispiel verwende ich Folgendes in meiner .vimrc, um das Bewegen im Befehlsmodus auf hjkl-Weise fingerfreundlich zu gestalten (Missbrauch der Strg-Taste):

 " moving aroung in command mode
 cnoremap <c-h> <left>
 cnoremap <c-j> <down>
 cnoremap <c-k> <up>
 cnoremap <c-l> <right>
 cnoremap ^     <home>
 cnoremap $     <end>

wobei ^ und $ wirklich <ctrl- ^> und <ctrl- $> sind und in der .vimrc (aus irgendeinem Grund <c- ^ als <cv> <c- ^> und <cv> <c- $> eingegeben werden > und <c- $> funktionieren nicht, zumindest in meiner Einstellung, aber die ersteren tun es)

Dalker
quelle
0

Unter Mac OS

  • Shift+ left arrow: ein Wort zurückbewegen
  • Shift+ right arrow: ein Wort vorwärts bewegen
Mau
quelle