I have Vim installed inside a docker container.
I want to yank some text and somehow magically make it available on my host (macOS) clipboard.
Is that even possible?
So to clarify, this is my full use case...
docker run ...
some container with Vim baked into the imageNow I'm not sure how this works in the sense of the host (macOS) has to use a VM provided by the docker ecosystem in order to run docker in the first place (as macOS is not a Linux based system and as such can't natively run docker containers without an intermediary VM).
So I'm not sure if the tricks for getting content into the docker system clipboard will filter back through to the VM and into the actual (macOS) host.
I've seen people suggest using X11 and mounting its socket file into the docker container, then using xclip (or xsel). I tried this but was unable to get Vim to yank into the appropriate register for xclip to pick up the yanked content. So subsequently I wasn't sure if my attempt to setup and mount x11 worked either:
brew install Caskroom/cask/xquartz
open -a XQuartz
-v /tmp/.X11-unix:/tmp/.X11-unix
apt-get install -y xclip
"*yiw
(select the "*
selection register and then yiw
yank the current word under the cursor) < but seems vim 8 inside of the container has no such register available to yank into? my vimrc that I've mounted into the container already has set clipboard+=unnamed
(which is what I've used in the past to get vim to yank to the macOS system clipboard)Note: if I tried to use
xclip
directly (just to see how it worked), most of what I tried resulted inError: Can't open display: (null)
.
You have to use two combinations, one after the other: ctrl+p followed by ctrl+q. You turn interactive mode to daemon mode, which keeps the container running but frees up your terminal. You can attach to it later using docker attach, if you need to interact with the container more.
Simply running in a tmux session, then accessing the target Docker container (eg. docker container exec -it myhost bash
), allowed me to open the contents with say vim, and use the standard TMUX copy behaviour to send it to the host machine's clipboard. Job done. No need for clipper
etc if that is your use case.
It definitely is.
Take a look at https://github.com/wincent/clipper
It's a service that let's you write to clipboard using netcat
.
All you would have to do would be to be able to access your machine's localhost from inside a docker container.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With