Exemple: copiez dans un volet tmux (via vim), puis basculez vers un autre volet (exécutant une autre instance de vim) et collez à l'aide de la commande vim paste. Je sais que cela peut être fait via tmux (en utilisant le préfixe +]) mais ce serait vraiment pratique si je peux copier et coller en utilisant les liaisons vim car je ne fais que basculer entre les différents volets exécutant vim.
Des idées?
Désolé, j'essaie de vous convaincre d'utiliser les fonctionnalités intégrées de vim.
Pour faire le copy/paste
facile, vous pouvez ouvrir des fichiers dans une autre onglet:
:tabe /path/to/another/file
Utilisation gt ou gT pour changer de tabulation.
Ou divisez la fenêtre pour modifier un autre fichier:
:sp /path/to/another/file
Utilisation Ctrl-ww pour changer de Windows.
Pour diviser la fenêtre verticalement, veuillez utiliser :vsp file
C'est mon .tmux.conf
fichier:
# vim
setw -g mode-keys vi
bind [ copy-mode
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy V rectangle-toggle
bind ] paste-buffer
# buffer
bind Space choose-buffer
Je les utilise uniquement lorsque j'ai besoin de copier la sortie du terminal.
J'ai utilisé cette reliure pratique depuis plusieurs années :)
" copy to buffer
vmap <C-c> :w! ~/.vimbuffer<CR>
nmap <C-c> :.w! ~/.vimbuffer<CR>
" paste from buffer
map <C-p> :r ~/.vimbuffer<CR>
Bien que je convienne qu'il est préférable de n'utiliser qu'une seule instance de vim, vous pouvez le faire avec tmux seul. Il a un mode copie intégré. Mon tmux.conf est configuré comme:
setw -g mode-keys vi
unbind [
unbind p
bind C-y copy-mode
bind p paste-buffer
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy Escape cancel
Vous pouvez donc utiliser prefix-<C-y>
pour activer le mode copie, /search term
comme exemple pour aller où vous voulez, v
pour sélectionner visuellement, y
pour accéder à tmux. Accédez ensuite à une autre session vim et passez en mode insertion. Utilisation prefix-p
pour coller le contenu du tampon de collage tmux. Il existe également des moyens de copier le tampon de collage de tmux dans le presse-papiers de votre système.
Je suis actuellement coincé avec un ordinateur portable exécutant Windows au travail, mais je fais tout mon développement sur un serveur exécutant Linux, donc je finis par travailler dans une session tmux sur PuTTY toute la journée.
Je voulais copier du texte entre des instances de vim fonctionnant dans différentes fenêtres dans ma session tmux. J'ai essayé d'utiliser le *
inscrivez-vous pour copier dans le presse-papiers du système, mais comme je suis connecté via PuTTY, je n'ai pas de session X, donc il n'y a est pas de presse-papiers du système, même si je lance gVim au lieu de vim. (J'aurais peut-être pu utiliser x-forwarding ou quelque chose pour résoudre ce problème, mais je ne voulais pas installer un x-server sur Windows.)
Je pensais qu'il devrait y avoir un moyen d'utiliser le tampon copier/coller tmux de vim à la place du clavier système, et bien sûr, quelqu'un a écrit n plugin pour cela .
L'installation de fakeclip ajoute un nouveau registre, &
, qui correspond au tampon de collage de tmux. Étant donné que toutes mes instances vim sont dans la même session tmux, cela rend très simple de tirer/mettre du texte entre elles.
La documentation du plugin indique que fakeclip devrait également fonctionner avec l'écran gnu, mais je n'ai pas personnellement testé cela.
tl; dr
Installez le plugin fakeclip , puis vous pouvez utiliser "&y to yank dans le tampon de tmux, et "&p à put à partir du tampon de tmux.
Vous pouvez copier le contenu dans le presse-papiers à l'aide de liaisons Vim, puis basculer vers le volet et le coller. Les raccourcis clavier suivants peuvent être utiles.
noremap ty "+y
noremap tY "+Y // copy a whole line to the clipboard
noremap tp "+p // put the text from clipboard after the cursor
noremap tP "+P // put the text from clipboard before the cursor
Le "+
register est utilisé pour accéder au clipborad du système dans Vim.
Quelques conseils utiles:
1. Vous pouvez appuyer sur v
ou V
ou ctrl-v
pour passer en mode visuel, puis sélectionnez le contenu que vous souhaitez extraire et appuyez sur ty
pour le copier dans votre presse-papiers.
2. ty
peut être combiné avec d'autres mouvements. Par exemple, tyaw
peut être utilisé pour copier un mot sous le curseur dans le presse-papiers. tyib
copiez le contenu entre parenthèses. tyi"
copier le texte entre guillemets doubles, etc ...
Voir aussi Comment faire coller Vim à partir (et copier dans) le presse-papiers du système? pour plus d'explications.
solution sur Fedora24
vous devez utiliser vimx au lieu de vim
mettez votre .bashrc ou .zshrc
alias vi='vimx'
alias vim='vimx'
puis vous pouvez facilement copier entre les panneaux vims/tmux
$ vim --version | grep clipboard
-clipboard +insert_expand +path_extra -toolbar
+eval +mouse_dec +statusline -xterm_clipboard
$ vimx --version | grep clipboard
+clipboard +insert_expand +path_extra +toolbar
+eval +mouse_dec +statusline +xterm_clipboard
vimx fait partie de vim-Enhanced-2: 7.4.1868-1.fc24.x86_64 que vous avez probablement installé
Cela fonctionne dans neovim.
Exécutez :checkhealth
, vous trouverez quelque chose comme ceci:
## Clipboard (optional)
- OK: Clipboard tool found: tmux
Sinon, vous devrez peut-être mettre à niveau le tmux vers la dernière version 2.9.
Ajoutez ensuite le code suivant dans '~/config/nvim/init.vim'
set clipboard+=unnamedplus