Pour être clair, vous ne voulez pas d'un "moyen rapide de déplacer le curseur sur une ligne de commande de terminal ". Ce que vous voulez réellement, c'est un moyen rapide de naviguer sur la ligne de commande dans votre programme shell .
Bash est un shell très courant, par exemple. Il utilise la bibliothèque Readline pour implémenter l'entrée de ligne de commande. Et pour ainsi dire, il est très pratique de connaître les liaisons Readline car il n'est pas utilisé uniquement dans bash. Par exemple, gdb utilise également Readline pour traiter les entrées.
Dans la documentation Readline, vous pouvez trouver toutes les liaisons liées à la navigation (et plus):
http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction
Court copier-coller si le lien ci-dessus tombe en panne:
Strict minimum
- Ctrl-b Reculer d'un caractère.
- Ctrl-f Avance d'un caractère.
- [DEL] ou [Backspace] Supprime le caractère à gauche du curseur.
- Ctrl-d Supprime le caractère sous le curseur.
- Ctrl-_ ou Cx Cu Annule la dernière commande d'édition. Vous pouvez annuler jusqu'à une ligne vide.
Mouvement
- Ctrl-a Déplacement au début de la ligne.
- Ctrl-e Se déplacer à la fin de la ligne.
- Meta-f Avance d'un mot, où un mot est composé de lettres et de chiffres.
- Meta-b Recule d'un mot.
- Ctrl-l Efface l'écran, réimprimant la ligne actuelle en haut.
Tuer et tirer
- Ctrl-k Tue le texte de la position actuelle du curseur à la fin de la ligne.
- Md Tuer du curseur à la fin du mot en cours ou, si entre les mots, à la fin du mot suivant. Les limites des mots sont les mêmes que celles utilisées par Mf.
- M- [DEL] Supprime à partir du curseur le début du mot actuel, ou, si entre les mots, le début du mot précédent. Les limites des mots sont les mêmes que celles utilisées par Mb.
- Ctrl-w Tuer du curseur à l'espace blanc précédent. Ceci est différent de M- parce que les limites des mots diffèrent.
- Ctrl-y Copie le texte le plus récemment tué dans la mémoire tampon au niveau du curseur.
- Faites pivoter l'anneau de destruction et tirez sur le nouveau sommet. Vous ne pouvez le faire que si la commande précédente est Cy ou My.
M est la clé Meta. Pour Max OS X Terminal, vous pouvez activer "Utiliser l'option comme touche méta" dans Paramètres / Clavier pour cela. Pour Linux, c'est plus compliqué.
Mettre à jour
Notez également que Readline peut fonctionner selon deux modes:
- mode emacs (qui est la valeur par défaut)
- mode vi
Pour basculer Bash en mode vi:
$ set -o vi
Personnellement, je préfère le mode vi car j'utilise vim pour l'édition de texte.
Prime
Dans l'application macOS Terminal (et dans iTerm aussi), vous pouvez cliquer sur Option pour déplacer le curseur (le curseur se déplacera à la position cliquée). Cela fonctionne même à l'intérieur vim
.
Maintenez la touche Option enfoncée et cliquez à l'endroit où vous souhaitez que le curseur se déplace, et Terminal précipite le curseur à cet endroit précis.
la source
J'ai tendance à préférer le mode d'édition vi (puisque ces frappes sont maintenant intégrées dans ma moelle épinière (le cerveau n'est pas du tout utilisé), avec les touches CTRL-K, CTRL-X de WordStar 3.3 :-). Vous pouvez utiliser la ligne de commande
set -o vi
pour l'activer (etset -o emacs
pour revenir en arrière).Dans Vi, ce serait (ESC-K pour obtenir la ligne en premier bien sûr) "
f5;;B
" (sans les guillemets).Bien sûr, vous devez comprendre ce qui est en jeu pour vous en sortir. Fondamentalement, c'est
Voyons si les aficionados d'emacs peuvent trouver une meilleure solution, moins de 5 frappes (même si je ne veux pas déclencher une guerre de religion).
Avez-vous pensé si vous aimeriez peut-être mettre cette commande horriblement longue dans un script? :-)
En fait, je peux faire mieux que ça: "
3f5B
" pour trouver la troisième occurrence de "5" puis revenir au début du mot.la source
Utilisez Meta-b / Meta-f pour reculer / avancer d'un mot respectivement.
Sous OSX, Meta se traduit par ESC, ce qui est nul.
Mais alternativement, vous pouvez ouvrir les préférences du terminal -> paramètres -> profil -> clavier et cocher "utiliser l'option comme clé méta"
la source
Après avoir exécuté la commande une fois, exécutez
fc
Il se lancera
$EDITOR
avec la commande précédente, puis vous pourrez utiliser votre éditeur habituel pour modifier la commande. Lorsque vous enregistrez et quittez, le fichier sera exécuté...mais, comme Pax l'a dit - la ligne de commande n'est pas particulièrement bonne pour éditer des lignes absurdement longues - pourquoi ne pas transformer la commande en script?
la source
Si vous voulez avancer d'un certain nombre de mots, appuyez sur
M-<n>
(M-
est pour Meta et c'est généralement la touche d'échappement) puis appuyez sur un nombre. Cela envoie un argument de répétition à readline, de sorte que vous pouvez répéter la commande que vous voulez - si vous voulez avancer, appuyez surM-<n> M-f
et le curseur avancera du<n>
nombre de mots.Par exemple
Donc, pour votre exemple à partir du curseur au début de la ligne que vous frapperiez,
M-26 M-f
et votre curseur serait à--option25|
-ou- de la fin de la ligneM-26 M-b
placerait votre curseur à--|option25
la source
Recherche d'historique incrémentielle
dans le terminal entrez:
puis copiez-collez et enregistrez
tout ce que vous avez à faire pour trouver une commande précédente est d'entrer, disons les 2 ou 3 premières lettres et la flèche vers le haut vous y emmènera rapidement, dites je veux:
tout ce que j'ai à faire est d'entrer
et appuyez sur la commande de flèche vers le haut apparaîtra bientôt
la source
Une option consiste à utiliser
M-x shell
dansemacs
. Cela fournit toutes les installations et les frappes de touches d' édition quiemacs
a, doncC-s
peut être utilisé pour rechercher le texteoption25
, par exemple.(Mais je préférerais toujours être dans le vrai shell du terminal à la place si quelqu'un peut me diriger vers de bonnes installations de recherche et d'édition.)
la source
Utilisez la souris
Parfois, le moyen le plus simple de modifier une ligne de commande consiste à utiliser une souris. Certaines réponses précédentes donnent une commande pour ouvrir votre ligne actuelle dans votre $ EDITOR. Pour moi (zhs avec la configuration grml), cette combinaison est
Alt+e
. Si vous activez la souris dans votre éditeur, vous pouvez l'utiliser.Pour activer la souris dans Vim, ajoutez ceci à votre ~ / .vimrc
Si vous souhaitez ensuite faire une sélection de texte dans le terminal (au lieu de passer le clic de souris à vim), maintenez Shift lorsque vous cliquez; ceci est bien sûr spécifique au terminal.
Les administrateurs système ne doivent pas avoir peur de la souris.
la source
Dans Cygwin, vous pouvez activer cette fonctionnalité en cliquant avec le bouton droit de la souris sur la fenêtre. Dans la fenêtre contextuelle, sélectionnez Options ... -> Souris -> activer Clics placez le curseur de ligne de commande -> Appliquer.
À partir de maintenant, il suffit de cliquer sur le bouton gauche de la souris à un endroit quelconque de la ligne de commande pour y placer le curseur.
la source
d'abord: export EDITOR = 'nano -m'
puis: CTRL + X CTRL + E dans l'ordre.
Votre ligne actuelle s'ouvrira dans l'éditeur nano avec l'activation de la souris. Vous pouvez cliquer dans n'importe quelle partie du texte et modifier
puis CTRL + X pour quitter et y pour confirmer l'enregistrement.
la source
J'ai créé un script pour faire bouger le curseur de la ligne de commande sur un clic de souris :
Il peut être trouvé sur github
Plus d'informations sur un autre article
Fonctionnera si vous
echo -e "\e[?1000;1006;1015h" # Enable tracking
imprimez des séquences d'échappement sur le terminal en cliquant avec la sourisla source
Ce n'est peut-être pas le plus rapide, mais cela doit être ici, quelques lectures sur les mouvements du curseur ANSI
Les séquences d'échappement ANSI vous permettent de déplacer le curseur sur l'écran à volonté. Ceci est plus utile pour les interfaces utilisateur plein écran générées par les scripts shell, mais peut également être utilisé dans les invites . Les séquences d'échappement de mouvement sont les suivantes:
(...)
Essayez de mettre la ligne de code suivante à l'invite (c'est un peu plus clair ce que cela fait si l'invite est de plusieurs lignes vers le bas du terminal lorsque vous mettez cela):
echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"
Cela devrait déplacer le curseur de sept lignes vers le haut de l'écran, imprimez le mot "BASH ", puis revenez à l'endroit où il a commencé à produire une invite normale.Exemples :
Reculez le curseur de 7 lignes:
Déplacez le curseur sur la ligne 10, colonne 5:
Écho rapidement des codes couleurs , pour coloriser un programme:
la source