惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
A
About on SuperTechFans
腾讯CDC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Microsoft Azure Blog
Microsoft Azure Blog
D
Docker
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
I
InfoQ
博客园 - 【当耐特】
美团技术团队
GbyAI
GbyAI
量子位
宝玉的分享
宝玉的分享
爱范儿
爱范儿
有赞技术团队
有赞技术团队
博客园 - Franky
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志

LanYunのBlog

优化macOS Dock栏的显示与隐藏 解决macOS全屏模式下某些情况显示原始鼠标指针的问题 Yarn从Classic迁移到Modern nginx自编译 用santa对二进制进行监控和授权 ESXI 8.0安装黑群晖DSM 7.x openwrt编译过程记录 编译monero For macOS ARM 自建busuanzi不蒜子平台统计平台 浅记博客更新日志 (机翻)Kubo配置文件 修改brew services中服务的启动参数 技术杂记📝 解决Surge模块不能同步问题 为Arch Linux配置邮件服务 自编译NutClient-ESXI,更改邮件逻辑 解决ESXI和群晖使用SSH密钥登录问题 为J4125软路由ESXI中群晖提供UPS服务 在arch linux上搭建rustdesk server 解决虚拟机扩容中GPT PMBR大小不符问题 搭建Tuic V5 优雅地为macOS提供python多版本的支持 修复root路径下文件权限问题 解决macOS 14上利用Whisky运行steam时有关问题 在macOS中用PhpStorm配置Xdebug调试 利用CloudFlare Workers快速自建一个IP获取器 如何自动续期证书? 从0开始速配VPS用于网站等 搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot) For Mac 010 Editor For Mac 13.0.1 Crack 破解
解决Vim关于复制的相关问题
LanYun · 2022-04-22 · via LanYunのBlog

前言

问题①

mac本机的vim在开启set mouse=a鼠标操作后,直接用鼠标没办法复制

解决①

(最简单):将vim换macvim

安装命令:

1
brew install macvim

之后用mvim代替vim

如果想直接用vim调用mvim,可以在~/.zshrc中添加这一条

1
alias vim="mvim"

解决②

(简单,但有缺陷)

contrl^+拖动鼠标选择,即可直接复制

缺陷:如果开启了set number来显示行号,需要关闭set nonumber,否则会将行号复制进去.

只能复制当前页面的内容,换行没法处理等缺陷.

解决③

看本文后续内容.

问题②

将远程服务器(VPS)某个文本文件内容或某些文本内容拷贝到本地Mac剪切板.

解决①

在iTerm2中开启Applications in terminal may access clipboard

image-20230701225156994

新建pbcopy.py文件,内容为:

1
2
3
4
5
6
7
8


import sys
import base64

content = sys.stdin.read()
encoded_content = base64.b64encode(content.encode()).decode()
sys.stdout.write('\033]52;c;' + encoded_content + '\007')

然后给权限chmod +x pbcopy.py

然后软链接一下sudo ln -s /路径/pbcopy.py /usr/bin/pbcopy

用法:通过管道给pbcopy

可以参考文章(采用php实现的)https://www.laruence.com/2020/05/21/5880.html

问题③(复杂Max)

远程服务器(VPS)的vim在开启set mouse=a鼠标操作后,直接用鼠标没办法复制.

远程服务器(VPS)和Mac之间剪贴板互通问题.

解决①

先按照本文后续内容配置.

如果你的Linux是带图形化界面的,那么大概率就配完了(实际,我没测试,因为我除了虚拟机的linux带图形化界面外,服务器(vps)都玩不带图形化界面的命令行),如果不是,那么继续.

下面内容 基于X11 Forwarding + XQuartz 等第三方工具 实现图形化界面显示.

为啥?因为你配完,vim里面进行复制(y)会把vim里面的寄存器reg "" 值给linux系统的剪贴板,而它的内容和Mac的剪贴板内容不互通,故需要通过某种协议(下面用的是X协议)来进行交换.

客户端(Mac端)需要配置:

安装xquartz

1
2
3
brew install xquartz
open /Applications/Utilities/XQuartz.app
sudo mvim /etc/ssh/ssh_config

Host * 下添加 ForwardX11 yes 然后重启ssh服务,但我实在不知道用那个命令能杀死ssh服务,故我直接重启系统.

可选: 点击 XQuartz 右键 自定义 添加一个命令(/Applications/iTerm.app/Contents/MacOS/iTerm2)指向 iTerm2

(未知原因:需打开过xterm才可用.)

image-20230702023237926

如何在扩展坞和应用程序切换器中隐藏XQuartz应用程序图标?

以 root 身份编辑 /Applications/Utilities/XQuartz.app/Contents/Info.plist 中的 Info.plist,并在中末尾添加以下键/值(转到文件的最底部并找到最后两行之前):

1
2
<key>NSUIElement</key>
<string>1</string>

然后在命令中输入下面命令(强制签名)

1
sudo codesign -f -s - --timestamp=none --all-architectures /Applications/Utilities/XQuartz.app/Contents/MacOS/X11

然后打开XQuartz(其实命令行中输xterm然后关掉,一样的效果),发现只能在活动监视器只看到了.(这玩意有点吃内存300多MB)

服务端(远程服务器)需要配置:

注:下面以Arch Linux为例

1
2
3
4
5
6
7
pacman -S xorg-xauth xclip 
touch ~/.Xauthority && chmod 600 ~/.Xauthority
cat /etc/ssh/sshd_config | grep X11Forwarding
sudo vim /etc/ssh/sshd_config
X11Forwarding yes
sudo systemctl reload sshd.service
sudo systemctl restart sshd.service

连接服务器:

ssh -Y user@address

查看当前用户的图形显示服务器(X服务器显示位置)echo $DISPLAY

测试:

1
2
3
echo "Hello, world" | xclip -selection clipboard 

xclip -selection clipboard -o | pbcopy

参考文章:ZSH, tmux, Emacs 以及 SSH: 一个关于粘帖复制的故事


|下面是旧的内容,可略过|

解决通过iterm2进行ssh连接远程vps中使用vim复制不能传递到Mac本机剪贴板的问题.

记录一下烦人的VIM复制问题.本人的vim配置是有set mouse=a 方便鼠标操作的.也有set number来显示行号.烦人的是便捷复制让这2个不可兼得.

一直困扰我到今天,尝试了办法来解决,终于勉强能接受了…

在只有set mouse=a到情况下,在 iTerm 下直接按住 option 选择文本,再 command + C 复制就行了

但是一旦有set number来显示行号的,由于 iTerm 并不知道哪些是 vim 的文本内容,哪些是附加信息,多行选择时会把行号选进来.这就很烦.

在只有set number到情况下,虽然可以直接复制,但是没了鼠标快速操作和滚动.(个人主观认为:)挺麻烦而且慢的本人vim小白,操作vim键位不是很熟悉.知道通过键位输入效率高,大佬们勿怪.

关于 寄存器 哪些知识或者其他与操作无光的内容,参考此知乎链接🔗


本文直接说说我的操作吧.

首先再终端中输入这行命令

1
vim --version | grep clipboard

分为二种情况.

回显内容有 -clipboard

例如:

image-20220422165049632

很遗憾,你的vim也许出了些问题或者不完整,我们需要重装来修复它.

根据系统类型选择,合适的命令进行修复.

Linux系统

Debian / Ubuntu
1
sudo apt install vim-gtk

操作例图:

image-20220422165437111

Arch Linux / Manjaro
1
pacman -S gvim

MacOS系统

1
brew install vim

操作例图:

image-20220422165600506

回显内容有 +clipboard

恭喜你,你的vim没有问题!

image-20220422172326099

开始设置vim

终端中输入.

1
vim ~/.vimrc

回车,在末尾添加这一行(用于同步剪贴板寄存器)

1
set clipboard^=unnamed,unnamedplus

image-20220422173037118

浅学复制相关姿势

现在你的yp已经能和 ctrl-cctrl-v 一个效果,并且能互相混用。

但问题是不能用鼠标选中否则会进入 SELECT选择模式 ,这个模式下输入除了按ESC键以外几乎都会覆盖掉你选中的内容实测,输入y,虽然覆盖了,但也复制了.也可以再粘贴回去,不过还是感觉麻烦了 :)

那么,我们改怎么操作呢?个人认为正确做法应该是学习.👇

学习vim的一些操作,这里只说一下我认为是必要的内容.

首先,推荐一个类似于游戏学习vim的网站👉Learning VIM while playing a game

接下来讲一下,可能频率使用高的基本操作.

普通模式(NORMAL)下,

w 跳到下一个单词

b 跳到上一个单词

它们与shift结合,可以加快速度.

视图模式(VISUAL)下

以你光标位置开始(可以在按V切换到视图模式之前,点击你想要选中文本到开头).

w 选中到下一个单词

b 选中到上一个单词

shift功能在这里也一样.

然后就可以用 yctrl-c(Mac上是command+c)开始愉快的复制啦~

受限于篇幅,更多内容请自行学习.