Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier du texte issu d'un vim ouvert sur une machine distante (qui ne possède pas de serveur X)

21 réponses
Avatar
Francois Lafont
Bonjour à tous,

Au quotidien, j'utilise Terminator et vim sur ma Debian Wheezy
avec grande satisfaction mais il y a quand même truc qui me gêne.
C'est quand je me connecte via ssh à une machine distante et que
j'ouvre un fichier texte via vim sur la machine distante. Là, j'ai
des difficultés si je veux copier le contenu du fichier dans le
presse-papier de ma machine locale.

En effet, si je veux copier un bout de texte (genre 2 lignes) pas
de souci. Avec ma souris je sélectionne les deux lignes et je peux
faire une copier/coller sur ma machine locale. En revanche, si je
veux copier tout le fichier (et que son contenu dépasse la taille
de la fenêtre de mon terminal), là je suis ennuyé car c'est
impossible avec la souris de scroller dans le vim de la machine
distante (sauf en activant :set mouse=a sur le vim distant mais
c'est voué à l'échec, cf plus bas).

Le seul moyen que j'ai trouvé c'est de quitter vim sur la machine
distante pour me retrouver dans un shell, faire un « cat le-fichier »
sur la machine distante et ensuite sélectionner avec la souris
l'ensemble de la sortie de la commande précédente. Ça marche car,
curieusement, autant je ne peux pas sélectionner du texte via un
scrolling de la souris dans un vim de la machine distante, autant
je peux le faire sur son shell de la machine distante (je ne sais
pas pourquoi, c'est une constatation). Cette solution n'est quand
même pas pratique car il faut que je remonte avec ma souris jusqu'au
« cat le-fichier » sans le dépasser (si jamais je peux remonter
jusqu'à lui dans mon terminal ce qui n'est pas forcément le cas si
le fichier est trop long).

Je précise que j'ai tenté le coup du :set mouse=a qui permet
effectivement de sélectionner du texte avec la souris dans vim
(en passant automatiquement en monde "VISUAL LINE" mais ce que je
sélectionne n'est pas « copiable » dans le presse-papier de ma machine
locale. Il n'y a *pas* de serveur X a priori sur la machine distante,
je ne veux pas en installer un, ni même installer vim-gtk etc. (donc
pas de solution à base de X svp). Hors de question de faire un scp entre
ma machine locale et la machine distante car parfois j'ai une petite
chaîne de ssh avant d'arriver sur la machine distante qui peut être sur
un réseau inaccessible à la machine locale (je n'ai pas envie de
m'amuser à monter un tunnel ssh).

Je me dis que la solution doit plutôt passer par une config au niveau
du terminal que j'utilise (Terminator donc) plutôt que par des options
de vim mais je me trompe peut-être. Je trouve que c'est quand même
curieux que je puisse sélectionner du texte avec un scrolling de la
souris quand je suis sur le shell de la machine distante mais que ça
devienne impossible quand j'y ouvre vim. J'ai constaté de visu que les
gens qui sont sous Mac n'ont ce souci (ils peuvent faire du scrolling
pour sélectionner du texte sans problème et a priori sans rien configurer
de particulier). J'avoue que je suis un peu jaloux. ;)

Merci pour votre aide.

--
François Lafont

1 réponse

1 2 3
Avatar
Francois Lafont
Bonjour à tous,

Désolé pour ma réponse tardive.

Déjà merci à tous pour vos explications par rapport à la
notion de serveur X et de client. C'est beaucoup plus
clair maintenant et du coup j'ai bien compris que ma demande
était tout simplement impossible.

Et d'ailleurs, j'ai demandé à des "Maceux" et j'ai bien eu
la confirmation que, eux aussi, ont le même souci que moi (ce
qui est logique donc). Je m'étais donc trompé, il me semblait
bien avoir vu un "Maceux" faire la manip mais c'était dans mes
rêves manifestement. ;)

Donc le "Maceux", tout comme moi le linuxien, utilisons
simplement « l'historique » de notre terminal local et basta.

Je garde dans un coin la pratique du X-forwarding qui me servira
très certainement. Je rebondis d'ailleurs sur le message de YBM :

YBM a écrit :

le serveur n'est nécessaire que sur le bureau de départ (là où il y a un
affichage...).

si tu atteints ton système distant par une série de ssh -X (-X :
X-Forwarding dans un tunnel ssh), et que le client X11 xclip est
installé sur le système distant, un :

xclip < /le/fichier.txt

mettra le contenu du fichier dans le clipboard du serveur X que
tu as sous les yeux, celui de ta station : un clic du milieu dans
un éditeur te le confirmera : tu retrouveras ton fichier.



Merci pour ces explications, j'ajoute simplement qu'au départ ça
ne marchait pas et j'avais, au moment de la connexion ssh, le
message :

X11 forwarding request failed on channel 0

Il a fallu simplement que j'installe le paquet xauth sur la
machine distante et tout a fonctionné ensuite.

Merci à tous pour votre aide. Pour ma part, je considère mon
problème comme résolu. ;)

--
François Lafont
1 2 3