Comment puis-je configurer Bash, Zsh ou Tmux pour compléter le dernier identifiant correspondant à l'écran ? Considérez ce scénario courant:
$ git fetch
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (9/9), done.
From /opt/git/thunder
* [new branch] issue540 -> origin/issue547314
e9204cf..4d42c3f v2.1 -> origin/v2.1
Comment puis-je obtenir issue547
facilement Bash / Zsh / Tmux sur la CLI? Lorsque j'appuie Tabaprès que $ git checkout is
Git se termine utilement issue
, mais je dois compléter les chiffres par moi-même car tous les chiffres précédents correspondent en fait aux branches Git existantes .
Dans VIM, appuyer sur Ctrl+ Ppour omnicomplete se terminera comme le match précédent, donc dans ce cas issue547314
sera en fait terminé. Comment puis-je obtenir ce comportement dans Bash, dans Zsh ou dans Tmux ?
J'utilise actuellement Bash 4.2 et Tmux 1.10 sur Ubuntu Server (généralement 12.04 LTS). Je peux mettre à jour vers le dernier Ubuntu Server LTS (14.04) si nécessaire.
EDIT : Cela ne me dérangerait pas une solution qui utilise Bash, Zsh ou Tmux tant qu'elle n'est pas difficile à utiliser. Donc, Tabou Ctrl+ Pou un autre raccourci de ce type serait bien, mais pas Alt+ Meta+ Super+ Shift+ א.
Réponses:
Je pense que cette fonctionnalité que OP recherche est appelée dabbrev-expand dans le monde Emacs:
xterm
a également desdabbrev-expand
fonctionnalités, mais il est un peu moins intelligent que son homologue Emacs, mais il est très utile pour moi et l'une des raisons pour lesquelles je suis passéxterm
. Dans laxterm
fenêtre, on peut utiliser une liaison de touches personnalisée spécifiée dans~/.Xresources
pour invoquerdabbrev-expand
une chaîne donnée. Par exemple, j'ai l'entrée suivante dans mon~/.Xresources
(j'utiliseuxterm
, une version Unicode de xterm):Dans la
xterm
fenêtre intérieure , je peux utiliserM-/
(ALT + /
) pour invoquerdabbrev-expand
.xterm
recherchera toutes les chaînes visibles à l'écran qui commencent par les lettres que j'ai tapées. Exemple:Si je pressais
M-/
maintenantxterm
élargiraita_v
àa_very_long_string
. Malheureusement, comme je l'ai dit, cexterm
n'est pas si intelligent et sadabbrev-expand
fonctionnalité ne fonctionnera que sur des chaînes complètes. Donc, dans votre cas,is
serait étendu àissue540
et nonissue547314
parce qu'ilissue547314
fait partie deorigin/issue547314
(pensez-y comme\b
dans les expressions régulières, c'est un peu similaire, bien que la plupart des moteurs d'expressions régulières capturent les deux occurrences deissue
chaînes\bissue.+\b
). Mais , vous pouvez taperor
puis pressezM-/
.xterm
va d'abord s'étendreor
àorigin/v2.1
, ce n'est pas ce que nous voulons, alors appuyez àM-/
nouveau etxterm
développez-leorigin/issue547314
. Maintenant, si vous utilisez Bash, vous pouvez le faireM-b
,C-w
etC-e
pour retirer uneorigin/
partie. Pour résumer, l'dabbrev-expand
intérieurxterm
n'est pas aussi bon que dans Emacs (et Vim je suppose) mais c'est toujours plus rapide que de réécrire de longues cordes à la main et moins sujette aux fautes de frappe. Et dans la plupart des cas, il s'étendra directement à la chaîne souhaitée sans avoir à supprimer les parties redondantes. Vous avez juste besoin de vous y habituer - regardez la chaîne que vous voulez avoir au curseur et voyez si elle n'est pas précédée par quelque chose d'autre, et si c'est tapez une partie précédente et supprimez-la après l'expansion.Notez que ce
xterm
n'est pas compilé avec ladabbrev-expand
fonctionnalité par défaut et vous devez l'activer explicitement. Cependant, la version dexterm
dans les référentiels Ubuntu est compilée avecdabbrev-expand
et vous pouvez l'utiliser immédiatement.la source
xterm
etuxterm
ne sont pas compilés pour dabbrev-expand, je n'ai trouvé aucune mention de la fonctionnalité dans-help
. Comment puis-je voir les drapeaux de compilation (comme avecvim --version
)? Notez que j'ai aussi essayé la ligne de configuration en~/.Xresources
tantMeta <KeyPress> /: dabbrev-expand() \n\
que l'on trouve ici , mais cela n'a pas aidé non plus .xrdb -merge .Xresources
dans xterm.zsh
a cette facilité.Bash comme une installation similaire appelée bash achèvement. Vous pouvez l'utiliser en appuyant sur la Tabtouche lorsque vous fournissez des arguments aux commandes lorsque vous les tapez.
Exemple
Si je commence par taper
ls
puis appuyer Tabdeux fois, vous obtiendrez Bash pour fournir une liste des fichiers correspondants (et des commutateurs de ligne de commande) à la commande que vous essayez d'utiliser:Et voici l'exemple avec les commutateurs:
Installer?
Mon installation incluait déjà une règle pour
git
:L'installation de ce fichier a été effectuée lorsque j'ai installé le
git
package. Je suis sur Fedora 19, mais d'autres distributions devraient également le faire.En regardant le fichier de règles, il explique qu'il facilitera l'auto-complétion dans les situations suivantes:
Donc, cela devrait "fonctionner" pour vous.
la source
Vous pouvez faire quelque chose comme ça avec extrakto :
prefix + tab
pour démarrer extraktotab
pour l'insérer dans le volet courant,enter
pour le copier dans le presse-papiers,ctrl-o
pour ouvrir le chemin / l'URL ouctrl-e
éditer avec$EDITOR
la source