需求 (Feature)
通过 ssh 连远程 ubuntu server(18.04) 时经常会需要通过 vim 编辑文件 copy 一些代码,或者通过 tmux 复制 shell 命令,此时如果需要 paste 到本地每次都需要使用鼠标选中,极其麻烦,对于键盘党来说太不友好,偶然听说 xclip 可以解决这个问题,于是开始了折腾。中间过程中意外解决了以前遇到的一些杂症,甚是神奇。
介绍 (Introduce)
X
- 图形界面并不是
Linux的一部分,和Windows95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了 X是协议,一个基于X的应用程序需要运行并显示内容时会连接到X服务器,开始用X协议和服务器通信X11是指 X Protocol version 11
安装 (Installation)
Ubuntu 安装 xclip
1 | apt install -y xclip |
OSX 安装 XQuartz
The XQuartz project is an open-source effort to develop a version of the X.Org X Window System that runs on OS X.
- 装完之后需要重新登陆系统
- 配置
Application,将xterm替换成iTerm的运行路径/Applications/iTerm.app/Contents/MacOS/iTerm2 - 检查是否配置成功,iTerm 内执行
echo $DISPLAY
配置 (Configuration)
客户端 ssh 配置
检查是否已经启用 X11
1 | cat /etc/ssh/ssh_config |
确认输出包含
1 | Host * |
ssh 连接时添加 -X 参数
1 | ssh -X root@host |
服务端 ssh 配置
1 | cat /etc/ssh/sshd_config |
确认输出包含
1 | X11Forwarding yes |
服务端 ~/.tmux.conf 配置
1 | # copy to Mac OSX clipboard |
服务端 ~/.vimrc 配置
1 | " y |
Trouble Shooting
vim 配置好了之后为什么不生效?
- 确认 vim
+clipboard已经开启,vim --version | grep clipboard,推荐使用vim-gtk代替系统默认vim mosh不支持X协议 mosh/issues/41
意外解决的问题
- vim 光标 之前一直用的系统默认
vim发现normal和insert相互切换时光标没办法改变(box <-> vertical var),换成gvim这个问题就解了 - zsh 光标 没启用
X之前一直也无法切换光标形状,开启过后问题已解
<!–stackedit_data:
eyJoaXN0b3J5IjpbOTA2NzEyNDE2LDEwMjg2NzYyNzUsOTA2Nz
EyNDE2LDEwMTAzODg5MTMsLTM1Nzg3NDc5OCwtMTQzNzY1Mzcy
NSw2MjgxMzA1MjUsMTkzOTAzMjQ3MSw3NTgwNjQzNjAsMTc0Mj
M1NTkxOF19 - ->