如何将Ubuntu终端的复制粘贴行为修改为类Windows WSL的智能模式?
如何将Ubuntu终端的复制粘贴行为修改为类Windows WSL的智能模式?
嘿,这个需求确实很实用——不用在终端内外切换不同的快捷键逻辑,省心多了!要实现WSL那种「选中时Ctrl+C复制,未选中时发送中断信号」的智能行为,我们可以通过自定义脚本+终端快捷键配置来搞定,不用把SIGINT映射到其他键,完全贴合你的需求。
第一步:准备辅助脚本(实现智能Ctrl+C)
我们需要一个小脚本,用来判断当前终端是否有选中的文本,然后执行对应的操作。
- 先安装依赖工具
xclip(用来读取选中的文本和操作剪贴板):
sudo apt update && sudo apt install xclip -y
- 在你的用户目录下创建脚本
smart-ctrlc.sh,内容如下:
#!/bin/bash # 读取终端中选中的文本(主剪贴板) selected_text=$(xclip -o -sel primary 2>/dev/null) if [ -n "$selected_text" ]; then # 如果有选中内容,将其复制到系统剪贴板(和Ctrl+Shift+C效果一致) echo -n "$selected_text" | xclip -sel clip else # 如果没有选中内容,发送SIGINT信号(和原生Ctrl+C的中断功能一致) kill -INT $PPID fi
- 给脚本添加执行权限:
chmod +x ~/smart-ctrlc.sh
第二步:配置终端快捷键
接下来要把这个脚本绑定到Ctrl+C,同时调整默认的复制/粘贴快捷键:
- 打开GNOME终端,点击顶部菜单栏的「编辑」→「键盘快捷键」。
- 找到「复制」选项,把默认的
Ctrl+Shift+C改成其他快捷键(比如Ctrl+Alt+C),避免和我们要设置的智能Ctrl+C冲突。 - 点击「添加」按钮:
- 名称填「智能Ctrl+C」
- 命令填
~/smart-ctrlc.sh - 点击「设置快捷键」,按下
Ctrl+C完成绑定。
- 处理粘贴:找到「粘贴」选项,把默认的
Ctrl+Shift+V改成Ctrl+V,这样终端内外的粘贴快捷键就统一了。
验证效果
现在回到终端试试:
- 选中一段文本,按下
Ctrl+C,文本会被复制到系统剪贴板,和WSL的行为一致; - 没有选中任何文本时,按下
Ctrl+C,会正常中断当前运行的命令(比如正在执行的ping); - 不管在终端内还是外,
Ctrl+V都能直接粘贴内容。
这种方法完全保留了原生Ctrl+C的中断功能,同时实现了智能复制,完美匹配你想要的WSL风格体验~
备注:内容来源于stack exchange,提问作者zi yuan




