Je tapais juste quelque chose dans le sens de:
mv foo/bar/poit/zoid/narf.txt
et soudain réalisé, putain, je dois taper à nouveau de grandes parties de ce paramètre
mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt
Même avec la tabulation terminée, une grande douleur. Je sais que je peux copier-coller le paramètre en sélectionnant le texte et le clic intermédiaire avec la souris, mais ce n'est pas suffisant. Je veux rester sur le clavier.
Existe-t-il un moyen de copier-coller le paramètre actuel de la ligne à l'aide du clavier?
bash
readline
line-editor
k0pernikus
la source
la source
mv foo/bar/poit/zoid/{narf.txt,troz.txt}
au lieu de taper / copypasting l'adresse longue deux fois.mv foo/bar/poit/zoid/{narf,troz}.txt
. Cela fonctionne particulièrement bien si nous avons quelque chose comme.../zoid/this_source_file_has_to_be_patched.c{,.orig}
Réponses:
Si j'ai planifié à l'avance, j'utilise l' expansion d'accolade . Dans ce cas:
Voici une autre approche utilisant les
readline
raccourcis clavier par défaut :mv foo/bar/poit/soid/narf.txt
: débutunix-word-rubout
pour supprimerfoo/bar/poit/soid/narf.txt
yank
, l' espace, àyank
nouveau pour obtenirmv foo/bar/poit/soid/narf.txt foo/bar/poit/soid/narf.txt
backward-kill-word
deux fois pour supprimer le derniernarf.txt
troz.txt
: tapez la partie de la queue qui est différenteSi vous passez du temps non trivial à utiliser le
bash
shell, je vous recommande de lire régulièrement une liste des raccourcis par défaut et d'en choisir quelques-uns qui semblent utiles à apprendre et à intégrer dans votre routine. Le chapitre 8 dubash
manuel est un bon point de départ. Connaître les raccourcis peut vraiment augmenter votre efficacité.la source
.txt
, vous pouvez appuyer sur Ctrl + Gauche (ou sur tout autre raccourci appelantbackward-word
), sur Gauche un caractère, puis sur Alt + Retour arrière et tapertroz
.L'expansion de l'historique fonctionne également sur la commande actuelle, à l'aide de l'indicateur d'événement
!#
. Combinez cela avec le mot désignateur pour le dernier argument -$
- pour obtenir le paramètre que vous venez de taper. Et vous pouvez utiliser tous les modificateurs habituels dessus, donc si, par exemple, vous renommez un fichier dans un répertoire éloigné, vous pouvez simplement taper:la source
magic-space
option de bash dans inputrc pour étendre automatiquement les extensions d'historique. (Je n'ai pas pu utiliser la réponse la plus votée parce que j'ai réglé ^ W pour casser les barres obliques car c'est généralement plus utile.)alt+backspace
s'arrête généralement déjà aux délimiteurs de mots comme les barres obliques, vous n'avez donc pas besoin de changer la façon^W
d'obtenir cette fonctionnalité, vous pouvez avoir à la fois supprimer les mots sans caractère de mot ou les mots délimités par des espacesComme dans votre exemple, vous pouvez utiliser la construction suivante:
ou même (comme suggéré Ansgar Esztermann ):
au lieu de cela, taper / copypasting une longue adresse deux fois.
la source
En jouant, j'ai réussi à travailler:
Appuyez sur Enter
pour stocker le dernier paramètre.
Maintenant, utilisez ↑pour obtenir la dernière saisie en ligne. Entrez un espace et pour obtenir le dernier paramètre utilisé, utilisez:
Alt + .
Je déteste provoquer une erreur, mais cela fait le travail dans ce cas d'utilisation.
la source
Vous pouvez facilement utiliser des variables:
Ou en vous cas (note de la concurrence onglet fonctionne pour la une partie):
la source
J'ai ceci dans mon
~/.inputrc
:!#
est la ligne actuelle,:$
est le dernier mot, et\e^
esthistory-expand-line
.la source
Pour
zsh
, je trouve les raccourcis clavier utiles.J'ai donc frappé Alt- Mpour répéter le dernier argument alors Alt- Ksi je veux supprimer des parties à la fin d'un chemin.
Voici une référence utile à certains des comportements que vous pouvez mapper.
la source
Une courte solution interactive en deux étapes
type:
echo foo/bar/poit/zoid/narf.txt
Cela rend
foo/bar/poit/zoid/narf.txt
disponible le raccourci Alt- .dans bash.tapez:
mv
et frappé Alt- ., Space, Alt-.Vous obtiendrez
mv foo/bar/poit/zoid/troz.txt foo/bar/poit/zoid/troz.txt
. Vous pouvez maintenant modifier facilement le dernier mot.Commandant de minuit
Cet outil qui peut être (très) pratique est un gestionnaire de fichiers fonctionnant dans la console. Il vous donne la possibilité de copier les noms de fichiers et les chemins de répertoire de manière interactive dans la ligne de commande. Midnight Commander vous montre donc 2 panneaux (gauche et droite), qui listent le contenu de différents répertoires.
Un petit guide:
C'est de loin le moyen le plus rapide que j'ai trouvé jusqu'à présent - après m'être habitué aux raccourcis.
la source
Utilisez la même chose dans le {,} "duplicateur". C'est à dire:
la source