Während ich vim in einer tmux-Sitzung verwende, kann ich nicht in das unbenannte Register ziehen oder einfügen. In ein benanntes Register zu gehen funktioniert einwandfrei, aber unbenannt funktioniert nie.
Fehler ist:
E353: Nothing in register *
Ohne tmux funktioniert vim mit meinen aktuellen Einstellungen einwandfrei. Wie behebe ich das, damit ich es verwenden kann? y dann p ohne Fehler und ohne Angabe des Registers?
Aus der Fehlermeldung (Nothing in register *
) geht hervor, dass, wenn Sie eine Ebene tun? p
name__, Ihre Instanz von Vim verwendet das *
-Register anstelle des nbenannten Registers*. Dies liegt wahrscheinlich daran, dass Ihre Option clipboard
NAME_ den Wert unnamed
enthält. Wenn Vim auf diese Weise konfiguriert ist, wird das *
-Register anstelle des unbenannten Registers standardmäßig für Operationen zum Ziehen, Löschen, Ändern und Platzieren verwendet (dh es sei denn, Sie geben ein anderes Register mit dem Präfix "
an, z. B. "ap
aus dem Register a
setzen).
* Das unbenannte Register heißt tatsächlich "
(doppeltes Anführungszeichen). Es ist nur "unbenannt" in dem Sinne, dass Sie es nicht benennen müssen, um es zu verwenden (es ist die Standardeinstellung). Das heißt Sie müssen nicht ""p
sagen, um aus dem unbenannten Register nur p
zu setzen.
Der Standardwert von clipboard
enthält nicht unnamed
name__, daher stammt er wahrscheinlich aus einem Teil Ihrer Konfiguration (oder einem Plugin). Der Befehl :verbose set clipboard?
zeigt Ihnen das Skript, das den aktuellen Wert festlegt. Wenn dies in Ihrer Konfigurationsdatei ausgeführt wird, möchten Sie dies möglicherweise nicht, wenn Sie unter tmux ausgeführt werden. Z.B:
if $TMUX == ''
set clipboard+=unnamed
endif
Alternativ kann es eine Möglichkeit geben, Instanzen von Vim-inside - tmux auf die GUI-Auswahl/Zwischenablage zuzugreifen (arbeiten Sie also mit dem Register *
und/oder unnamed
in clipboard
name__). Wenn Sie Mac OS X ausführen, sollten Sie sich mein Workaround-Wrapper ansehen, mit dem der Zugriff auf die Zwischenablage für Prozesse, die in einer tmux -Sitzung ausgeführt werden, wieder aktiviert wird. Wenn Sie ein anderes Betriebssystem oder eine andere GUI verwenden, müssen Sie herausfinden, wie Vim normalerweise mit der GUI kommuniziert und warum dies nicht funktioniert (z. B. falscher DISPLAY-Wert unter X11, möglicherweise aufgrund der Verbindung zu einer alten Sitzung, die ausgeführt wird) eine Shell mit einem veralteten Wert).
In vim/tmux/osx funktioniert Folgendes für mich:
brew install reattach-to-user-namespace
set clipboard=unnamed
set-option -g default-command "reattach-to-user-namespace -l bash"
Quelle: https://coderwall.com/p/j9wnfw
Das fakeclip plugin bewirkt, dass sich das Register der Zwischenablage in vielen Terminals wie erwartet verhält und tmux/screen unterstützt. Benutzt du es? Es kann Ihr Problem beheben.
Möglicherweise interessieren Sie sich auch für diesen Tipp ... Er ist nicht auf Ihre Frage anwendbar, aber verwandt. Abhängig von der Art des Systems/Terminals, in dem Sie tmux ausführen, benötigen Sie möglicherweise einige Anpassungen in Ihrem .tmux.conf
. Hier ein Beispiel von meinem .tmux.conf
unter OS X (mit einigen Anweisungen in Kommentaren):
# To use pbcopy and pbpaste on OS X, get this wrapper and install
# git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git
# cd tmux-MacOSX-pasteboard/
# make reattach-to-user-namespace
# mv reattach-to-user-namespace /usr/local/bin
# After installing, the default command can be reset to use the 'reattach-to-user-namespace'
# wrapper that was compiled/installed as descripted above.
set -g default-command "reattach-to-user-namespace -l /bin/bash"
# #Next, create Ctrl-c and Ctrl-v mappings
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "tmux set-buffer $(reattach-to-user-namespace pbpaste); tmux paste-buffer"
So fügen Sie der akzeptierten Antwort einige Notizen aus meiner Erfahrung mit OSX hinzu:
set clipboard=unnamed
und nicht set clipboard=unnamedplus
tun.$ killall tmux
oder $ tmux kill-session -a
) beenden. Beim erneuten Laden der tmux-Konfigurationsdateien wurde angezeigt, dass der Standardbefehl gesetzt wurde, vim jedoch keinen Zugriff auf die Systemzwischenablage gewährte.Späte Antwort, aber es könnte auch sein, dass Ihr .tmux.conf
die folgende Zeile enthält:
set -g set-clipboard off
kombiniert mit einem .vimrc
enthaltenden
set clipboard=unnamed
dies führt dazu, dass vim versucht, eine Zwischenablage zu verwenden, die nicht vorhanden ist.