Suppression de l'entrée dans la dernière barre oblique

16

Je voltigerai très souvent entre plusieurs fichiers sur un serveur. Je vais exécuter les exemples de commandes suivants dans l'ordre:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

Pour passer d'une nanocommande à la suivante, j'appuie actuellement sur Upet Backspacepour remplacer le dernier segment du chemin. Le problème, c'est que je suis vraiment, vraiment paresseux.

Existe-t-il un raccourci clavier (ou Bashism) qui peut soit:

  • Être remplacé par le dernier chemin utilisé (avec un bit supplémentaire à la fin)
  • Supprimer dans la ligne actuelle (par exemple après avoir appuyé sur Up) pour revenir à la dernière/
Oli
la source
1
Je ne sais pas exactement ce que vous voulez dire, mais je pense que pour la première partie, vous pouvez utiliser alt+ .?
Sparhawk
@Sparhawk Alt + .est utilisé pour autre chose .
Radu Rădeanu
@ RaduRădeanu Ouais, peut-être que je comprends mal la question. Je pensais que "se faire remplacer par le dernier chemin utilisé (avec un bit supplémentaire à la fin)" signifiait ce que alt+ .fait.
Sparhawk
@Sparhawk Encore une fois, un de ces raccourcis qui est vraiment utile environ une fois par mois et que je ne semble tout simplement pas capable de mémoriser. En combinaison avec alt-backspace, il est assez pratique pour exécuter des fichiers similaires via différentes commandes.
Oli
@Oli J'ai tendance à l'utiliser assez souvent, mais j'oublie toujours comment me déplacer dans l'autre sens !
Sparhawk

Réponses:

21

Je pense que vous recherchez le raccourci Alt+ Backspace.

Après avoir appuyé sur, Upcela devrait supprimer le précédent /ou le spacecaractère.

Sylvain Pineau
la source
7
MAINTENANT JE SUIS ISTOPPABLE! (Edit: je jure que j'apprends et j'ai oublié ce raccourci au moins dix fois par an)
Oli
3
Qu'est-ce que cela devrait faire? Sur mon terminal, cela ne semble pas faire autre chose que simple backspace.
Bakuriu
1
@Bakuriu Ce raccourci devrait être celui par défaut. Si vous voulez savoir à quoi il est mappé lors de l'exécution de votre systèmebind -P | grep '^backward-kill-word'
Sylvain Pineau
1
@Bakuriu Même chose ici, je suis sur Mac.
laike9m
9

Pour détecter la liaison readline qui tue un mot en arrière comme vous le souhaitez, vous pouvez utiliser la commande suivante dans votre terminal:

bind -p | awk '/kill/ && /word/ && /backward/'

Dans une installation Ubuntu par défaut, la sortie pourrait être:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

La deuxième ligne semble sans importance à ce stade, alors essayons de voir ce que signifie la première ligne. D'après ce que je comprends, la backward-kill-wordfonction readline qui en fait supprimer tous les caractères jusqu'à ce que le précédent caractère spécial ( /, ;, ,etc.) est liée à la \e\C-hséquence de touches. Maintenant, dans cette séquence \e représente la Escclé, \C- la Ctrlclé, et \C-hreprésente Ctrl+ hqui est équivalent dans ce cas avec Backspaceclé.

Donc, vous recherchez un raccourci clavier Esc+ Ctrl+h qui est équivalent à Esc+Backspace et qui, en raison du comportement de xterm qui fait que la Alttouche agit comme un méta-caractère et les méta-caractères sont convertis en une séquence de deux caractères avec le caractère lui-même précédé de Esc(voir man xterm) , est équivalent à Alt+Backspace .

Maintenant, si vous ne l'aimez pas et que vous continuez de l'oublier, vous pouvez utiliser la commande suivante pour créer un nouveau raccourci, disons Esc+ w, à votre fin:

bind '"\ew": backward-kill-word'

Pour rendre ce nouveau raccourci persistant tout le temps pour toutes les commandes qui utilisent readline, ajoutez la ligne suivante à votre ~/.inputrcfichier:

"\ew": backward-kill-word

Voir help -m bind | sensible-pagerpour plus d'informations.

Radu Rădeanu
la source
2
Bonne réponse. Plus généralement, vous placez l'ensemble du paramètre entre guillemets simples avec la commande bind; bind '"\ew": backward-kill-word', mais c'est taquin. Et il peut être utile de mentionner que vous pouvez aussi mettre "\ew": backward-kill-worden ~/.inputrc, dans ce cas , d' autres commandes que l' utilisation readline également que la liaison, par exemple si vous activez readline dans le shell interactif de python, que la liaison sera également y appliquer.
geirha
@geirha Oui, je sais ce que vous avez dit, mais je pensais que le PO sait comment gérer cela. Quoi qu'il en soit, maintenant je me rends compte que ma réponse n'est pas si utile pour l'OP (il voulait juste se souvenir du raccourci), mais j'espère être utile pour les autres utilisateurs de ce site et pour cela j'ai édité ma réponse en ajoutant votre observation. Je vous remercie.
Radu Rădeanu
0

Une autre combinaison de touches est:

Alt+ Bpuis Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+ Bpuis Alt+D

Cela supprime le dernier mot sans supprimer le caractère spécial entre les mots.

αғsнιη
la source