Habituellement, les terminaux permettent la sélection de texte avec la souris, mais le shell n'en est pas informé. Donc , malheureusement ni bash
, zsh
, fish
ni es
peut prendre en charge l' édition basée sur la souris. Je pense que pour ce faire, ils devraient prendre un plus grand contrôle sur le terminal.
Cependant (et c'est un peu exagéré) si vous ouvrez Vim ou GVim, puis entrez des commandes shell en utilisant:
:!...
alors vous pouvez cliquer sur votre souris pour aller n'importe où sur la ligne . (Vous devrez d' :set mouse=a
abord le faire si ce n'est déjà fait.) Les touches d'édition dans ce mode peuvent être vues avec:help cmdline-editing
Vim dispose également d'un mode d'historique de commandes assez puissant, qui peut être atteint en appuyant sur q:. De là, vous pouvez extraire, supprimer et coller à l'aide des commandes en mode normal de Vim. Dans ce mode, vous pouvez obtenir la sélection avec la souris, puis supprimer la fonction souhaitée (en appuyant sur d).
Une mise en garde importante ici est que Vim ne maintient pas réellement une session shell en direct. Chaque commande que vous exécutez sera exécutée dans un processus enfant. Ainsi, toutes les modifications apportées aux variables d'environnement ou aux options du shell par le processus enfant seront perdues.
Cela dit, vous pouvez modifier les variables d'environnement de l' intérieur du processus Vim, et les utiliser de la ligne de commande de Vim, et ils seront même être exportés vers des processus enfants:
:let $FOO="bar" " the $ and the quotes are mandatory here
:echo $FOO " Vim's own echo command
bar
:!echo "$FOO" " Passing the variable to a shell command
bar
:!bash " Opening a child shell
$ echo "$FOO"
bar
Donc, si vous êtes prêt à prétendre que Vim est en fait une sorte de shell étrange, alors vous pouvez profiter de ses fonctionnalités d'édition avancées! Le plus gros inconvénient est probablement que vous devrez démarrer chaque commande en tapant soit :!
ouq:
Oh et au fait, si vous voulez obtenir la sortie de la commande shell dans votre tampon Vim actuel, vous pouvez le faire comme ça (mais attention, cela encombrera votre ligne actuelle):
:,!ls