Linux剪贴板机制解析
在Linux系统中,剪贴板实际上分为三个不同的"选择":
- PRIMARY:鼠标选中即复制,中键粘贴(X11默认)
- SECONDARY:较少使用
- CLIPBOARD:Ctrl+C/Ctrl+V操作的剪贴板
IntelliJ的"复制路径"功能默认使用的是CLIPBOARD,而终端通常监听的是PRIMARY选择,这就导致了无法跨应用粘贴的问题。
解决方案:使用xclip工具
安装xclip(Ubuntu/Debian系):
sudo apt-get install xclip
创建别名实现双向同步:
# 添加到 ~/.bashrc 或 ~/.zshrc
alias ccp="xclip -selection clipboard"
alias cpp="xclip -o -selection clipboard | xclip -selection primary"
alias cpaste="xclip -o -selection clipboard"
IntelliJ自定义解决方案
在IntelliJ中创建自定义快捷键,将路径同时复制到两个剪贴板:
1. 打开 Settings > Keymap
2. 搜索 "Copy Path"
3. 右键选择 "Add Keyboard Shortcut"
4. 设置快捷键(如Ctrl+Alt+C)
5. 在右侧选择 "Add after" > "Shell Script"
6. 输入以下脚本:
#!/bin/bash
echo $1 | xclip -selection clipboard
echo $1 | xclip -selection primary
终极方案:剪贴板管理器
推荐使用Clipit或Parcellite这类剪贴板管理器,它们会自动同步不同选择的剪贴板内容:
# 安装Clipit
sudo apt-get install clipit
# 配置自动同步
在Clipit首选项中勾选:
☑ Synchronize selections
☑ Use Copy and Paste
验证解决方案
测试你的配置是否生效:
# 在IntelliJ中复制文件路径
# 然后在终端运行:
xclip -o -selection primary
xclip -o -selection clipboard
# 两个命令应该输出相同内容