远程ssh连接manjaro无法使用系统剪切板

背景

使用vim打开文件,把a文件中的内容,复制一部分到b文件中去。

大概步骤如下:

1、搜索要复制的部分的结尾,例如我这里要复制的是json,固定结尾是]}]}
/]}]}

2、按v进入可视化模式,可通过方向键批量选中
v

3、从结尾,复制到开头,按0,发现开头和结尾的内容都被选中了
0
4、y复制,p粘贴

预想的很完美,实际上发现粘贴的根本不是我们想要的,是之前复制的内容。

ok,有点意思了。

本机环境

mac 远程ssh连接开发机。
开发机是manjaor系统。且各软件版本都是最新的。

vim的复制粘贴

查看vim寄存器

:reg

Type Name Content
  l  "1   console.log("animator");^J
  l  "2   ^I^Iconsole.log(this.animator);^J
  l  "3   ^J                const indexBuffers = this.asset.getIndexBuffers();^J                for (const ib of indexBuffers) {^J                    const ind
  l  "4   Theme=Material-Color-Red^J
  l  "5   export PATH=$PATH:/usr/share/bcc/tools^J
  l  "6   pathmunge $HOME/.conda/envs/daily/bin after^J
  l  "7   pathmunge $HOME/.go/bin after^J
  l  "8   ^Igitlab.rokid-inc.com/open-platform/codec v0.0.0-20190903023529-9f40c211f9e5 // indirect^J
  l  "9           max-file: "365"^J
  c  "-   N{"asset":
  c  ":   reg
  c  "%   orange_monkey_2.gltf
  c  "/   ]}]}

可以看到,寄存器有很多,那么什么时候会用到这些寄存器呢?作用分别是啥?

各种寄存器的含义

  1. "0 - "9 :这是 10 个数字寄存器,每次执行复制操作时,Vim 都会将所复制的文本保存到 "0 号寄存器中。这使得 "0 号寄存器成为上一次复制操作的默认寄存器。你可以通过执行命令 "0p 将其内容粘贴到光标位置。
  2. "* 和 "+:这两个寄存器分别对应系统剪贴板和鼠标选择寄存器。当你使用这些寄存器进行复制和粘贴操作时,Vim 实际上是在与其他程序共享系统剪贴板。例如,在终端中运行 Vim 并使用 "+y 命令复制文本后,你可以在其他支持剪贴板功能的应用程序中使用 Ctrl+V 粘贴该文本。
  3. "- 是 Vim 中的一个特殊寄存器。它被称为无名寄存器,因为它是默认使用的寄存器,所有未指定寄存器名称的复制和剪切操作都将使用该寄存器。
  4. “:” 寄存器:该寄存器保存最近使用过的 Vim 命令行。例如,如果你在 Vim 中执行了 :wq 命令保存并退出当前文件,那么该命令将被保存到 “:” 寄存器中。你可以通过在命令模式下执行 Ctrl+R : 快捷键来将其内容粘贴到光标位置。
  5. “%” 寄存器:该寄存器保存当前编辑文件的文件名。% 符号表示当前文件名,它可以方便地用于执行某些 Vim 操作,例如在命令行中打开当前文件或者在 Vim 中执行关于当前文件的替换操作。
  6. “/” 寄存器:该寄存器保存最近使用的搜索模式。在 Vim 中,你可以使用 / 或 ? 命令搜索文本。当你执行此类操作时,Vim 会将搜索结果保存到 “/” 寄存器中,以便后续重复搜索或者粘贴搜索结果。

普通寄存器无法跨文件使用。也就是说,如果你在一个文件中复制了一段文本,然后打开另一个文件并尝试粘贴该文本,将无法成功。如果希望在多个文件之间共享寄存器的内容,可以使用系统剪切板,也就是"+y 和"+p

使用系统剪切板

一文搞懂vim复制粘贴 - huahuayu - 博客园

参考以上博客,确认vim支持 + clipboard, 打开vim复制粘贴依然不成功。 此时才注意到,:reg查看的寄存器列表中,根本就没有"+寄存器!

这就奇怪了,跟同事都是使用manjaor系统,他那边是正常的,我这边就不行? 区别就是我是使用ssh远程连接的服务器。 看来很可能是ssh导致的使用不了系统的剪切板了,那么如何解决呢?google一下。

ssh访问系统剪切板

Vim:通过ssh访问系统剪贴板 - Linux到OS X

这个博客指出来x11转发,那么X11是什么呢?

X11 转发是一种机制,它允许运行在远程系统的X11程序的图形界面显示在本地客户端上。对于X11转发,远程主机不需要有完整安装的X11系统;但是,至少需要安装_xauth_,_xauth_是维护Xauthority配置的实用工具,这个配置用于X11会话服务端和客户端的认证。
客户端程序发出用户输入,如鼠标、键盘的动作等,然后发送给服务器程序处理。服务器程序有一个X分配器(xorg),负责处理客户端程序的输入请求,并将响应应用到屏幕显示上。此外,它还负责管理系统中的窗口、剪贴板等。
共享剪贴板就是服务器程序将剪贴板内容保存在共享内存中,并对它进行锁定,从而允许客户端程序可以访问这个内容。当客户端程序读取剪贴板内容时,它会得到一个指向共享内存开始位置的指针,以便访问内容。

ok,看起来像是能解决我们的问题。

安装配置X11

mac下安装使用X11参考: https://cloud.tencent.com/developer/article/1754671
manjaor安装使用X11参考: https://wiki.archlinuxcn.org/wiki/OpenSSH

配置结束,安装xclock试试:

 sudo pacman -Sy xorg-xclock
# 执行xclock
xclock

# 提示Error: Can't open display:
# 解决方案: 远程连接ssh的终端没有设置display导致,设置一下即可。
export DISPLAY=:0

image.png
有点意思,顺带打开chrome看看

google-chrome-stable

能打开,就是非常卡。。。。。

再次查看vim寄存器

X11页配置好了,再次vim打开文件,查看寄存器

Type Name Content
  c  ""   TF^B^@^@^@<9c>{Â^A^@I^B^@JSON{"asset":{"gene
  c  "0   TF^B^@^@^@<9c>{Â^A^@I^B^@JSON{"asset":{"gene
  c  "1   set":{"gene
  l  "2   ^I^Iconsole.log(this.animator);^J
  l  "3   ^J                const indexBuffers = this.asset.getIndexBuffers();
  l  "4   Theme=Material-Color-Red^J
  l  "5   export PATH=$PATH:/usr/share/bcc/tools^J
  l  "6   pathmunge $HOME/.conda/envs/daily/bin after^J
  l  "7   pathmunge $HOME/.go/bin after^J
  l  "8   ^Igitlab.rokid-inc.com/open-platform/codec v0.0.0-20190903023529-9f40
  l  "9           max-file: "365"^J
  c  "-   ^B
  c  "*   TF^B^@^@^@<9c>{Â^A^@I^B^@JSON{"asset":{"gene
  c  "+   TF^B
  c  "%   orange_monkey_2.glb
  c  "/   ]}]}

"+ 和 “* 终于出来了,此时使用”+y 复制, "+p粘贴成功!

后记

说实话,完全没想到一个小小的复制粘贴能引出这么多问题。 不管是vim的配置,还是寄存器的选择,还是X11转发机制,还是sshd的配置,都深感知识的匮乏。继续上路吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
网络 如果您的Manjaro系统无法连接到无线网络,请按照以下步骤进行故障排除: 1. 确认网络适配器已启用 打开终端并输入以下命令: ``` ip link ``` 该命令将显示您的网络适配器。确保该适配器是启用状态。如果已禁用,请使用以下命令启用它: ``` sudo ip link set <interface_name> up ``` 其中,`<interface_name>`是您的网络适配器名称。 2. 确认无线网络已开启 确保您的无线网络已打开。您可以通过以下命令检查: ``` rfkill list ``` 如果无线网络已被阻止,请使用以下命令解除阻止: ``` sudo rfkill unblock <interface_name> ``` 3. 扫描可用的无线网络 使用以下命令扫描可用的无线网络: ``` sudo iwlist <interface_name> scan ``` 其中,`<interface_name>`是您的网络适配器名称。 该命令将列出可用的无线网络。确保您要连接的网络在列表中。 4. 连接无线网络 使用以下命令连接无线网络: ``` sudo iwconfig <interface_name> essid <network_name> key <password> ``` 其中,`<interface_name>`是您的网络适配器名称,`<network_name>`是要连接的无线网络名称,`<password>`是无线网络的密码。如果无线网络不需要密码,则不需要使用`key`参数。 5. 检查网络连接 连接无线网络后,使用以下命令检查网络连接: ``` ping www.google.com ``` 如果能够ping通,则表示您已成功连接到无线网络。 如果上述步骤仍无法解决问题,请尝试重启网络服务: ``` sudo systemctl restart NetworkManager ``` 希望这些步骤可以帮助您解决Manjaro无法连接无线网络的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值