66 votes

mode de copie tmux - sélection du bloc de texte

J'utilise tmux avec des touches vi, et le copier/coller fonctionne bien tant que l'on sélectionne une ligne de texte, ou si l'on n'a qu'une seule fenêtre. Lorsque je veux sélectionner un bloc de texte (plusieurs lignes, mais pas sur toute la largeur), je rencontre des problèmes. Si j'ai plusieurs fenêtres vim ouvertes, le texte sera sélectionné dans chacune d'entre elles, et ce dont j'ai besoin, c'est de sélectionner le texte dans une seule fenêtre. C'est-à-dire, comme une sélection visuelle dans vim.

Est-ce possible ?

2voto

Lqueryvg Points 568

EDIT : Après avoir vérifié le code source, j'ai complètement réécrit ma réponse.

J'ai d'abord pensé que ce n'était pas possible parce que je n'arrivais pas à le faire fonctionner, mais les autres réponses sont correctes. v étant la bonne clé pour cela, mais il n'est pas évident de l'utiliser, surtout si vous êtes habitué à vim.

De plus, cela n'a pas fonctionné pour moi parce que j'avais v lié à begin-selection - Je pense que j'ai dû copier aveuglément cette idée d'un autre endroit pour imiter la façon dont vim démarre une sélection de caractères, sans savoir que cela causerait des problèmes plus tard avec les sélections de blocs.

$ tmux -V
tmux 1.9a
$ tmux list-keys -t vi-copy  | grep " v "
bind-key -t vi-copy      v begin-selection     # suppressed my block selection mode

Une fois que j'ai supprimé ce lien (en commentant la ligne dans mon fichier .tmux.conf et redémarrer tmux), cela a commencé à fonctionner, mais c'est encore assez déroutant car ce n'est pas du tout la même chose que vim.

Avec les liaisons par défaut, cela devrait fonctionner comme suit :

  1. Assurez-vous que vous avez ouvert tmux avec setw -g mode-keys vi dans votre .tmux.conf .
  2. type C-a [ pour lancer le mode copie
  3. déplacez le curseur à l'endroit où vous voulez commencer la sélection
  4. type v
  5. type Space pour lancer la sélection
  6. déplacez le curseur et vous verrez une sélection rectangulaire
  7. vous pouvez appuyer sur v pour revenir à une sélection par caractère ou vice-versa.

Il n'est pas nécessaire de taper le v avant d'appuyer sur Space . Vous pouvez commencer la sélection des caractères par Space et appuyez sur v pour passer en mode de sélection rectangulaire.

Il est très différent de vim car dans tmux, il faut taper deux caractères : Space y v pour passer en mode de sélection rectangulaire. Dans vim, il suffit de taper Ctrl-V .

Aussi dans vim v commence une sélection par caractère, et non par bloc.

Malheureusement, il ne semble pas y avoir de mode de sélection par ligne dans tmux ( Shift-v dans vim).
EDIT : Il semble que la version 2.0 de Tmux fournisse un mode de sélection par ligne avec Shift-v (Je n'ai pas encore essayé !)

0voto

space_monkey Points 123

Puisque toutes les solutions proposées reposent sur les liaisons de touches tmux dans la configuration, et nécessitent donc le redémarrage de toutes les sessions tmux actives, il existe une solution "hotplug". Vous pouvez faire une sélection de rectangle sans quitter tmux.

Comment faire une sélection rectangle dans tmux sans redémarrer :

Je suppose que votre clé de préfixe est Ctrl + B .

Commencez comme d'habitude :

  1. Passer en mode copie : Ctrl + B puis [
  2. Déplacer le curseur au milieu d'une ligne

Les étapes ci-dessous sont spécifique pour la sélection du rectangle :

  1. Presse Ctrl + B puis : ( : pourrait en fait être un Shift + ; ) pour entrer dans un invite de commande .
  2. Tapez, en fonction de la version de tmux (comme mentionné dans la section Réponse d'Amir et plusieurs autres) :
    • tmux >= 2.4 : send -X rectangle-toggle
    • tmux < 2.4 : rectangle-toggle

Appuyez ensuite sur Enter pour exécuter la commande. La ligne d'invite de commande disparaît.

Maintenant, continuez comme d'habitude :

  1. Presse Ctrl + Space
  2. Déplacer la sélection avec les flèches
  3. Copier dans la mémoire tampon avec Alt + W

En rectangle-toggle est une commande ponctuelle, de sorte que votre prochaine sélection restera en ligne, à moins que vous n'appeliez la commande rectangle-toggle avant de procéder à une nouvelle sélection.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X