web-dev-qa-db-fra.com

Utilisation des mouvements de mode normal en mode ligne de commande dans VIM

L'édition modale est-elle possible en mode ligne de commande?

Quelques exemples:

  • Après avoir écrit !ls ~/foo/bar Je veux db à supprimer bar
  • J'ai exécuté la commande ci-dessus et je veux maintenant changer ls à mv et revenir à $
59
Natan Yellin

Par défaut, vous pouvez appuyer sur Control + f (ou voir sinon set cedit) Lorsque sur la ligne de commande Vim, qui ouvre la fenêtre de ligne de commande où vous pouvez modifier la commande à l'aide des touches d'édition VIM en mode normal. Enter va exécuter la commande ou Control + c vous retournera à la ligne de commande standard.

Donc, dans votre exemple spécifique, vous pouvez appuyer sur Control + f sur la ligne de commande Vim alors db et cela ferait ce que vous voulez.

Lorsque je dois faire des commandes d'édition plus sophistiquées, j'utilise l'approche ci-dessus parce que je connais plus avec les clés d'édition VIM que je suis avec les alternatives. Je trouve également les clés Vim en mode normal plus puissant.

Voir :help c_ctrl-f pour plus d'informations.

98
Jeromy Anglim

dans VIM mode de commande de commande: <ctrl-w> supprime un mot

dans mode normal: q: va à l'historique de la commande (qui peut être édité avec des commandes VIM)

voir :help cmdline-editing et :help cmdline-window Pour plus de commandes.

25
René Nyffenegger

Hottadates intégrées pour le mouvement et l'édition en mode de ligne de commande

<Esc>        abandon command-line without executing it
CTRL-C       abandon command-line without executing it

CTRL-B       cursor to begin of command-line
CTRL-E       cursor to end   of command-line

CTRL-F       opens the command-line window (unless a different key is specified in 'cedit')

CTRL-H       delete the character  in front of the cursor (same as <Backspace>)
CTRL-W       delete the Word       in front of the cursor
CTRL-U       delete all characters in front of the cursor

CTRL-P       recall previous command-line from history (that matches pattern in front of the cursor)
CTRL-N       recall next     command-line from history (that matches pattern in front of the cursor)
<Up>         recall previous command-line from history (that matches pattern in front of the cursor)
<Down>       recall next     command-line from history (that matches pattern in front of the cursor)
<S-Up>       recall previous command-line from history
<S-Down>     recall next     command-line from history
<PageUp>     recall previous command-line from history
<PageDown>   recall next     command-line from history

<S-Left>     cursor one Word left
<C-Left>     cursor one Word left
<S-Right>    cursor one Word right
<C-Right>    cursor one Word right

<LeftMouse>  cursor at mouse click

Référence: :help ex-edit-index

(Désolé pour le chevauchement avec des réponses plus anciennes. Espérons que cet aperçu complet, structuré est utile néanmoins.)
[.____] ° à partir de 2014 - de nouveaux raccourcis clavier ont peut-être été ajoutés depuis lors

12
Aaron Thoma

Rechercher :help cmdline-editingEn Vim.

Il donnera une liste de raccourcis fonctionnant en mode ligne de commande.

Un extrait pour votre problème actuel:

CTRL-B or <Home>                    *c_CTRL-B* *c_<Home>*
    cursor to beginning of command-line
CTRL-E or <End>                     *c_CTRL-E* *c_<End>*
    cursor to end of command-line
<S-Left> or <C-Left>                    *c_<C-Left>*
    cursor one Word left
                        *c_<S-Right>*
<S-Right> or <C-Right>                  *c_<C-Right>*
    cursor one Word right

ou utiliser q: Comme mentionné par René, ce qui vous permet de modifier les commandes typées précédentes dans différents modes.

8
Xavier T.

Plugins pour "Mode normal" - Modification de la ligne de commande

( emacscommandline Le mode ligne de commande se comporte plus comme la ligne de commande UNIX, en ajoutant des mappages de style EMACS (comme dans le Coquille bash). Certains des mappages ne font que mapper les commandes Vim existantes, mais les fonctionnalités de mise en œuvre de repos qui n'est pas disponible de manière native.

((( conoDe.vim Implémente une sorte de mode normal ("Mode CMDLINE-NORMAL") en haut de la ligne de commande. Le but est similaire à la fenêtre CMDLINE (Q :), mais la navigation et l'édition peuvent être effectuées en place. Bien sûr, la fenêtre CMDLINE est beaucoup plus puissante.

Conomode ne remplace pas l'édition de la ligne de commande de style emacs de Vim, elle ajoute simplement une clé: Ctrl-O (voir ci-dessous).

  • entrez avec C_ (appuyez sur CTRL-O pendant le mode de ligne de commande)
  • l'indicateur de mode est un colon ":", déplacé avec le curseur, caché le charret sous celui-ci
  • quittez à CMDLINE-MODE avec I, I, A, A,: ou TOUTE TOUTE MARCHE MARCHÉ (qui s'exécute ou s'insère ensuite), ou attendez 60 secondes.
  • quittez en mode normal avec ESC

(Certes, je ne comprends pas le point de ce plugin, puisque au lieu de frapper Ctrl+O Pour entrer dans son mode Cono-Mode, vous pouvez simplement afficher la fenêtre de la ligne de commande avec Ctrl+F.)

Il pourrait y avoir d'autres plugins là-bas. → https://www.google.com/webhp?q=command-line+Diditing+plugin+vim

Au lieu d'utiliser un plug-in pleinement soufflé, ou comme un complément, vous pouvez définir vos propres mappages . → Voir mon autre Réponse .

4
Aaron Thoma