Linux系统下如何实现统一剪贴板:解决IntelliJ复制路径无法粘贴到终端的问题


阅读 2 次

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
# 两个命令应该输出相同内容