vim + COPIE + mac via SSH
- Je accéder à une sever-dessus de ssh sur lequel je le lance vim pour éditer des fichiers. Lorsque j'essaie de copier le texte à partir de vim dans un éditeur local sur mon mac (lion) soit avec OU y "+y, il ne fonctionne pas. Je me retrouve avec un texte que j'ai copié dernier localement. Il fonctionne si je viens de l'utiliser p dans vim bien.
- êtes-vous à l'aide de Terminal.app ou un autre programme à long terme?
- Pouvez-vous changer le nom de vim + COPIE + mac via SSH
Vous devez vous connecter pour publier un commentaire.
De s'étendre sur les Rayons de la réponse...
Lorsque vous utilisez Vim sur un serveur distant via SSH, tout ce que vous faites dans Vim est fait sur le serveur distant. Le serveur distant et la distance Vim que vous êtes en cours d'exécution sur elle ont nulle connaissance pratique de votre ordinateur local et son presse-papiers du système.
À cause de cela,
y
ne sera jamais mis les arrachait votre texte dans le presse-papiers local.Dans le but de copier un bloc de texte de la distance Vim à votre machine locale du presse-papiers, vous avez trois options:
Sélectionnez le texte avec votre souris et appuyez sur Cmd+C comme dans n'importe quelle application Mac OS X.
De toute évidence, il semble être la plus facile, mais il a au moins trois limites:
Il est limité à l'écran actuel. Si le texte que vous voulez tirer ne s'affiche pas entièrement, vous ne serez pas en mesure de le copier.
Il ne joue pas bien avec
set mouse=a
. Avec cette option, toute tentative de choisir quelque chose avec la souris entraînera une visual de sélection de mode qui ne peuvent pas être copiés avec l' Cmd+C. Comme solution de contournement, vous pouvez utiliser Alt+souris pour sélectionner le texte sans entrer visual mode ou tout simplement supprimer ce paramètre à partir de votre télécommande~/.vimrc
.Les numéros de ligne sont également copiés.
Mettre l'arracha de texte dans un fichier temporaire,
scp
sur votre ordinateur local et l'utilisationpbcopy
de le mettre dans votre presse-papiers du système.Cette solution semble être un peu alambiqué, mais il fonctionne (et le problème lui-même est aussi un peu alambiqué). Au fil des années, j'ai vu beaucoup de différentes implémentations allant de la simple revêtements un client/serveur de configurations. Voici un, n'hésitez pas à autour de google pour les autres.
Utiliser X-forwarding pour connecter votre presse-papiers local de la télécommande presse-papiers si disponible.
"*y
,"+y
ou même <kbd>Cmd</kbd>+<kbd>C</kbd> pour copier dans le presse-papiers.:set nonum
.:set mouse=a
dans votre~/.vimrc
, vous devez tenir <kbd>fn</kbd> plutôt que <kbd>option</kbd> (<kbd>alt</kbd> sur MacOS) lors de l'utilisation de la souris pour sélectionner un bloc de code dans votre vim session.Ma solution est d'éditer le fichier avec vim à partir de votre ordinateur local via scp.
Cela permet de maintenir votre tampon local et le rend facile à copier dans votre presse-papiers local.
L'autre avantage est que vous obtenez pour l'utilisation de votre local vim le programme d'installation (.vimrc paramètres, plugins, etc.)
Eu ce problème - connectez-vous à partir de OSX via SSH à une machine linux et ne peut pas copier du texte à partir d'un fichier, ouvert avec vim.
Ma solution est
:set mouse=i
Par défaut de la souris est activé dans tous les modes. Lorsque vous définissez à être activé uniquement en mode Insertion, vous pouvez parcourir et copie lorsque vous n'êtes pas d'édition (mode normal) mais lorsque vous commencez à modifier (en cliquant sur le I ou Insérer la clé) et passer en mode insertion de la souris actes comme curseur de placement et vous ne pouvez pas copier à partir de la borne.
Vous pouvez définir cette option dans ~/.vimrc
Voir :l'aide de la souris pour plus d'informations sur les valeurs que peuvent et les modes.
Ma première réponse sur stackoverflow, mais je pense que c'est un endroit frais (mais petit) truc et il vaut la peine de poster. Voici donc ce que je fais :
Lorsque le texte est imprimé sur le terminal, je sélectionne tout le texte avec ma souris (la molette de la souris fonctionne, puisque nous sommes sur la fenêtre de terminal). Ensuite, copiez ce texte avec
Cmd
+C
et coller dans mon local éditeur de texte.Le seul défaut avec ce truc, c'est que c'est impossible à utiliser si vos fichiers sont des dizaines de milliers de lignes, depuis la sélection de toutes les lignes avec votre souris serait une tâche en soi. Mais pour un fichier de ~2k lignes, il fonctionne bien.
!cat >> %
, coller, et appuyez sur ctrl-C pour arrêter le chat. Exécuter:e!
et le contenu doit apparaître à la fin du fichier.Aspirer dans
vi
dans un terminal pour lequel vous ssh avais en copies les lignes en vi le buffer interne sur la machine distante, pas dans votre presse-papiers de Mac.Utilisez votre souris. 🙂
set mouse=a
n'est pas configuré. La vraie question est de copier les numéros de ligne ou d'avoir à les éteindre à chaque fois à copier. L'édition de fichiers à distance fonctionne bien: vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vimVoici une mise à jour sur la solution n ° 2 de la romainl. Il crée et alias de la commande ssh et lance le remotecopyserver si ce n'est pas en cours d'exécution et installe le remotecopy(rclip) dans le serveur distant. En bref, vous n'avez pas à faire autre chose que de coller l'extrait de code ci-dessous dans votre bash_profile.
Une fois l'alias est activé, vous pouvez normalement utiliser ssh et chaque fois que vous devez copier dans presse-papiers local de vim, utilisez
de copier l'ensemble du fichier dans le presse-papiers
à copier les lignes du mode visuel. Vous avez appuyer sur la touche "Cmd+V" ou "Ctrl+V" chaque fois qu'il demande la clé secrète.
Bonus
Pour ceux qui travaillent sur l'Errance, il y a un wrapper vssh qui va exécuter vagrant ssh mais aussi lance et installer les composants nécessaires.
Référence
Dernier extrait de code ici - https://gist.github.com/ningsuhen/7933b206b92fc57364b2
http://endot.org/2011/12/04/remotecopy-copy-from-remote-terminals-into-your-local-clipboard/
https://github.com/justone/remotecopy
Mises en garde
L'alias encapsule la commande ssh et il pourrait y avoir quelques problèmes inattendus.
ssho
est disponible si vous avez besoin d'exécuter ssh sans l'ensemble remotecopyserver chose. Alternativement, vous pouvez utiliser l'alias ssh2 et de garder la commande ssh comme il est.Un truc que j'utilise souvent lors de la copie de texte vim à l'aide de la souris si le nombre de lignes se peu plus volé mon écran est à minimiser (Cmd + '-') le texte. 🙂 Minimiser autant que vous ne pouvez pas voir par les yeux, mais vous pouvez copier tout le texte en une seule fois.
Sur MacOS, quand SSH de la machine A machine B et à l'aide de vim sur la machine B, j'ai ajouter à mon
.vimrc
sur la machine B:De cette façon, en mode normal, si vous copiez quelque chose à * s'inscrire, puis tapez
yr
, le contenu de*
inscrire dans vim@machine_B est copié sur la machine locale de presse-papiers, en supposant que vous avez la configuration de Vim correctement avec+clipboard
et*
registreiTerm2 Shell Utilitaires viennent avec
it2copy
qui permet de copier à partir d'un serveur distant à un client presse-papiers. Installer des Utilitaires d'environnement sur le serveur distant et assurez-vous que vous avezApplications in terminal may access clipboard
vérifié.Ensuite, allez dans
visual mode
, sélectionnez le texte et exécuter<,'>:w !it2copy
Ou, depuis le terminal, écrire
less [filename]
à le faire par écrit à la borne. Puis commencez par sélectionner avec votre souris, pendant que vous maintenezdown-arrow
-clé vers le bas. Ensuite, vous pouvez sélectionner l'ensemble du groupe.J'espérais améliorer ma solution ici, mais plutôt de les partager, comme il semble, à égalité avec les autres.
Lors de l'utilisation de iTerm2 sur un Mac, sshing dans les machines, l'exécution de tmux, et de l'éditer avec Vim, j'ai une fissure verticale iTerm2 fenêtre sur le Mac que je tire de tout le chemin sur le côté pour le rendre aussi maigre que possible.
Puis quand je veux copier du texte à partir de Vim, je vais cliquer sur la petite tranche de iTerm2 fenêtre, et de remonter le fil et le mettre en surbrillance, puis copier le texte à partir de Vim. Ce qui fonctionne le mieux pour une seule ligne de texte.
Si il y a un tmux split vertical, mettant en évidence plusieurs lignes dans le Vim tampon de ne pas envelopper correctement, et copie de texte à partir de l'autre tmux fenêtre, mais sinon c'est très bien pour la copie de 90% de ce que j'ai besoin, sans avoir à quitter Vim, chat un fichier, ou de faire autre chose.
J'ai aussi amplement horizontale de la fenêtre de l'espace, de faire la petite iTerm2 fenêtre pas un espace de porc.
Essayer les autres presse-papiers inscrivez -
"*y
.