87 votes

Utilisation des mouvements en 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 pour supprimer bar
  • J'ai exécuté la commande ci-dessus et maintenant je veux modifier ls a mv et de revenir à $.

149voto

Jeromy Anglim Points 8325

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

Donc, dans votre exemple spécifique, vous pourriez appuyer sur Control + f sur la ligne de commande Vim, puis db et ça ferait ce que vous voulez.

Lorsque je dois effectuer des commandes d'édition plus sophistiquées, j'utilise l'approche ci-dessus car je suis plus familier avec les touches d'édition de Vim qu'avec les autres solutions. Je trouve également les touches de Vim en mode normal plus puissantes.

Véase :help c_ctrl-f pour plus d'informations.

32voto

René Nyffenegger Points 14898

Sur vim Le mode de la ligne de commande de l'utilisateur : <ctrl-w> supprime un mot

sur mode normal : q: va dans l'historique des commandes (qui peut être édité avec commandes vim)

voir :help cmdline-editing y :help cmdline-window pour plus de commandes.

20voto

accolade Points 1173

Touches de raccourci intégrées pour le déplacement et l'édition en mode 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. Nous espérons que cet aperçu complet et structuré sera néanmoins utile).<br>° en date de 2014 - de nouveaux raccourcis clavier peuvent avoir été ajoutés depuis.

9voto

Xavier T. Points 14049

Buscar :help cmdline-editing dans 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é qui vous permet d'éditer les commandes précédemment tapées dans différents modes.

5voto

accolade Points 1173

Plugins pour l'édition en ligne de commande en "mode normal".

emacscommandline fait en sorte que le mode ligne de commande se comporte davantage comme la ligne de commande Unix, en ajoutant des mappings de style Emacs (comme dans le shell Bash). Certains des commandes vim existantes, mais le reste implémente des fonctionnalités non disponibles nativement. fonctionnalité qui n'est pas disponible nativement.

conomode.vim implémente une sorte de mode normal ("Cmdline-Normal mode") en plus de la ligne de commande. la ligne de commande. Le but est similaire à celui de la fenêtre cmdline (q :), mais mais la navigation et l'édition peuvent être effectuées sur place. Bien sûr, la fenêtre cmdline-window est beaucoup plus puissante.

Conomode ne remplace pas la ligne de commande native de style emacs de Vim de Vim, il ajoute simplement une touche : CTRL-O (voir ci-dessous).

  • entrer avec c_ (appuyer sur CTRL-O en mode ligne de commande)
  • l'indicateur de mode est un deux-points " :", déplacé avec le curseur, cachant le caractère qui se trouve en dessous.
  • quitter le mode Cmdline avec I, i, a, A, : ou toute autre touche non mappée (qui s'exécute ou s'insère alors), ou attendre 60 secondes.
  • quitter le mode normal avec Esc

(Il est vrai que je ne comprends pas l'intérêt de ce plugin, puisqu'au lieu de frapper Ctrl + O pour passer en mode Cono, vous pouvez tout aussi rapidement ouvrir la fenêtre de la ligne de commande avec Ctrl + F .)

Il existe peut-être d'autres plugins. → https://www.google.com/webhp?q=command-line+édition+plugin+vim

Au lieu d'utiliser un plugin complet, ou en complément de celui-ci, vous pouvez définir les éléments suivants vos propres mappings . → Voir mes autres réponse .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X