You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Ubuntu终端的复制粘贴行为修改为类Windows WSL的智能模式?

如何将Ubuntu终端的复制粘贴行为修改为类Windows WSL的智能模式?

嘿,这个需求确实很实用——不用在终端内外切换不同的快捷键逻辑,省心多了!要实现WSL那种「选中时Ctrl+C复制,未选中时发送中断信号」的智能行为,我们可以通过自定义脚本+终端快捷键配置来搞定,不用把SIGINT映射到其他键,完全贴合你的需求。

第一步:准备辅助脚本(实现智能Ctrl+C)

我们需要一个小脚本,用来判断当前终端是否有选中的文本,然后执行对应的操作。

  1. 先安装依赖工具xclip(用来读取选中的文本和操作剪贴板):
sudo apt update && sudo apt install xclip -y
  1. 在你的用户目录下创建脚本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
  1. 给脚本添加执行权限:
chmod +x ~/smart-ctrlc.sh

第二步:配置终端快捷键

接下来要把这个脚本绑定到Ctrl+C,同时调整默认的复制/粘贴快捷键:

  1. 打开GNOME终端,点击顶部菜单栏的「编辑」→「键盘快捷键」。
  2. 找到「复制」选项,把默认的Ctrl+Shift+C改成其他快捷键(比如Ctrl+Alt+C),避免和我们要设置的智能Ctrl+C冲突。
  3. 点击「添加」按钮:
    • 名称填「智能Ctrl+C」
    • 命令填~/smart-ctrlc.sh
    • 点击「设置快捷键」,按下Ctrl+C完成绑定。
  4. 处理粘贴:找到「粘贴」选项,把默认的Ctrl+Shift+V改成Ctrl+V,这样终端内外的粘贴快捷键就统一了。

验证效果

现在回到终端试试:

  • 选中一段文本,按下Ctrl+C,文本会被复制到系统剪贴板,和WSL的行为一致;
  • 没有选中任何文本时,按下Ctrl+C,会正常中断当前运行的命令(比如正在执行的ping);
  • 不管在终端内还是外,Ctrl+V都能直接粘贴内容。

这种方法完全保留了原生Ctrl+C的中断功能,同时实现了智能复制,完美匹配你想要的WSL风格体验~

备注:内容来源于stack exchange,提问作者zi yuan

火山引擎 最新活动