` 配置详解:把选区复制到系统剪贴板与主选择缓冲)
WezTermCopyTo(destination)配置详解把选区复制到系统剪贴板与主选择缓冲【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/weztermCopyTo(destination)是 WezTerm 中用于将当前选区文本复制到指定剪贴板缓冲区的按键分配KeyAssignment。本指南以docs/config/lua/keyassignment/CopyTo.md为核心讲解Clipboard、PrimarySelection、ClipboardAndPrimarySelection三种目标缓冲区的语义与适用平台给出可直接复制的 Lua 配置并结合仓库源码说明其底层执行链路帮助你按平台习惯定制复制行为。CopyTo 是什么在 WezTerm 的按键分配系统中CopyTo(destination)的作用是把当前选中的文本写入指定的剪贴板缓冲区。它最常见的用法是绑定到快捷键先通过鼠标或 Copy Mode 选中文本再触发该动作完成复制。从源码看CopyTo是 config/src/keyassignment.rs 中KeyAssignment枚举的一个变体携带一个ClipboardCopyDestination参数// config/src/keyassignment.rs pub enum KeyAssignment { // ... CopyTo(ClipboardCopyDestination), // ... }ClipboardCopyDestination的定义如下config/src/keyassignment.rspub enum ClipboardCopyDestination { Clipboard, PrimarySelection, ClipboardAndPrimarySelection, } impl_lua_conversion_dynamic!(ClipboardCopyDestination);由于该类型实现了FromDynamic/ToDynamic的 Lua 转换impl_lua_conversion_dynamic!你才能在 Lua 配置中直接写wezterm.action.CopyTo Clipboard这样的字符串形式。destination 的三种取值destination参数决定选中文本被写入哪个剪贴板缓冲区可选值如下取值含义适用平台Clipboard复制到系统剪贴板clipboard即常规的“复制到剪贴板”所有平台PrimarySelection复制到主选择缓冲区primary selection仅 X11 及部分 Wayland 系统ClipboardAndPrimarySelection同时复制到剪贴板与主选择缓冲区所有平台这里需要区分两个容易混淆的概念系统剪贴板Clipboard由 CtrlC / CtrlV 这类组合键读写显式地“复制—粘贴”内容不会随选择消失而丢失。主选择缓冲区PrimarySelection源自 X11 的传统机制文本随鼠标选中即时生效通常通过鼠标中键粘贴不依赖显式复制动作。在 Wayland 上主选择支持取决于合成器实现自 WezTerm 版本20220319-142410-0fcdea07起只要 Wayland 合成器支持primary-selection-unstable-v1协议或较旧的 Gtk primary selection 协议PrimarySelection也能正常工作见原文档的since标注。值得注意的默认值ClipboardCopyDestination的Default实现是ClipboardAndPrimarySelectionconfig/src/keyassignment.rs。这意味着凡是“默认复制到何处”依赖该类型的动作例如后面会提到的CharSelectArguments的copy_to字段在不显式指定时都会同时写入剪贴板和主选择缓冲区。基础配置示例将CopyTo绑定到快捷键的最简配置如下与 docs/config/lua/keyassignment/CopyTo.md 中的示例一致local wezterm require wezterm local config {} config.keys { { key C, mods CTRL, action wezterm.action.CopyTo ClipboardAndPrimarySelection, }, } return config在这个配置中key C配合mods CTRL表示 CtrlCwezterm.action.CopyTo ClipboardAndPrimarySelection会覆盖 WezTerm 默认的复制行为将选区同时写入系统剪贴板和主选择缓冲区在 X11 桌面环境中这样配置后中键粘贴和 CtrlV 都能取到刚复制的文本。如果只想使用常规系统剪贴板把动作改为wezterm.action.CopyTo Clipboard即可如果是在 Linux 上希望选区仅对主选择生效例如完全不依赖剪贴板管理器则使用wezterm.action.CopyTo PrimarySelection。底层执行链路CopyTo 被触发后发生了什么在 GUI 端CopyTo的按键分配由 wezterm-gui/src/termwindow/mod.rs 中的perform_key_assignment处理CopyTo(dest) { let text self.selection_text(pane); self.copy_to_clipboard(*dest, text); }执行流程分两步调用self.selection_text(pane)取出当前 pane 的选中文本调用self.copy_to_clipboard(*dest, text)按dest指定的目标缓冲区写入剪贴板。也就是说CopyTo只负责“把当前选区写出去”它本身不改变选区状态也没有弹出任何确认界面——是一个干净利落的动作非常适合直接绑到快捷键上。从复制模式的角度看CopyTo与CompleteSelection是同一族的能力CompleteSelection(ClipboardCopyDestination)同样携带目标缓冲区参数config/src/keyassignment.rs区别在于CompleteSelection除了复制外还会结束当前的鼠标选择动作而CopyTo纯粹执行复制。在 Copy Mode 中WezTerm 默认就把CopyTo(ClipboardAndPrimarySelection)作为复制键的动作之一见 wezterm-gui/src/overlay/copy.rs 附近的默认键表定义。在 Command Palette 中的呈现CopyTo也出现在 WezTerm 的命令面板Command Palette中。wezterm-gui/src/commands.rs 为三种目标缓冲区分别注册了命令项CopyTo(ClipboardCopyDestination::PrimarySelection)→ 显示为 Copy to Primary SelectionCopyTo(ClipboardCopyDestination::Clipboard)→ 显示为 Copy to ClipboardCopyTo(ClipboardCopyDestination::ClipboardAndPrimarySelection)→ 显示为 Copy to Clipboard and Primary Selection。同时在 wezterm-gui/src/commands.rs 附近默认的命令列表中还预置了CopyTo(PrimarySelection)与CopyTo(Clipboard)两个条目。这意味着即使你不在config.keys里显式配置也可以通过命令面板按名称搜索并执行“Copy to Clipboard”等动作方便在忘记快捷键时兜底使用。与其他剪贴板相关动作的关系CopyTo属于 WezTerm 剪贴板动作家族的一部分理解它与相邻动作的区别有助于选择合适的绑定动作作用典型用途CopyTo(destination)将当前选区写入指定缓冲区覆盖默认复制行为一键同时复制到剪贴板与主选择CompleteSelection(destination)复制选区并结束选择动作鼠标/复制模式中的“复制即结束”体验CopyTextTo { text, destination }将指定的任意文本写入缓冲区脚本或自定义动作中复制固定字符串PasteFrom(source)从指定缓冲区粘贴用快捷键从中键缓冲区粘贴文本其中CopyTextTo与CopyTo共用同一个ClipboardCopyDestination类型与copy_to_clipboard底层实现wezterm-gui/src/termwindow/mod.rs只是文本来源不同前者来自显式传入的text字段后者来自当前选区。小结CopyTo(destination)把当前选区复制到指定缓冲区destination支持Clipboard、PrimarySelection、ClipboardAndPrimarySelection三种取值其中PrimarySelection仅适用于 X11 与支持 primary selection 协议的 Wayland 系统。通过config.keys绑定快捷键即可覆盖默认复制行为不配置时也能从命令面板中找到对应的 Copy 命令。源码层面该动作由perform_key_assignment中selection_text与copy_to_clipboard两步完成wezterm-gui/src/termwindow/mod.rs语义明确、无额外副作用适合直接作为快捷键动作。如果你的日常使用以 Linux 为主且习惯中键粘贴ClipboardAndPrimarySelection是最贴近桌面习惯的默认选择。【免费下载链接】weztermA GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust项目地址: https://gitcode.com/GitHub_Trending/we/wezterm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考