如何在Fish Shell的可视模式下部分选中输入文本?
Fish Shell Vi可视模式选中文本复制粘贴配置方案
核心操作逻辑(和Vim一致)
Fish Shell的Vi模式默认支持可视选中文本,按以下步骤操作即可实现片段复制粘贴:
- 插入模式输入内容后,按
jk/kj切换到普通模式 - 普通模式下按
v进入可视模式,光标位置即为选中起始点 - 用光标键(
h左移/l右移)或Vim风格移动键(w跳至下一个单词开头、e跳至当前单词结尾、b回退至上一个单词开头)选中目标文本,选中区域会高亮显示 - 按
y复制选中内容,按p完成粘贴
调整你的config.fish配置
你当前的可视模式绑定针对yy且依赖xsel,可以优化为更贴合Vim习惯的绑定,同时兼容系统剪贴板:
# Use Vi keybindings function my_vi_bindings fish_vi_key_bindings # 普通模式:整行复制 bind -M normal yy fish_clipboard_copy bind -M normal Y fish_clipboard_copy # 全模式:粘贴 bind -M normal p fish_clipboard_paste bind -M visual p fish_clipboard_paste # 插入模式:快速切换到普通模式 bind -M insert -m default kj backward-char force-repaint bind -M insert -m default jk backward-char force-repaint # 可视模式:复制选中内容(Vim风格单键y) bind -M visual y fish_clipboard_copy # 可选:可视模式也支持yy整行复制 bind -M visual yy fish_clipboard_copy end set -g fish_key_bindings my_vi_bindings
关键说明
fish_clipboard_copy是Fish内置函数,会自动识别可视模式下的选中内容,无需手动处理命令行文本,跨平台兼容性更好(替代你之前的xsel命令)- 若坚持使用
xsel,可把可视模式的y绑定改为:
其中bind -M visual y 'commandline --selection | xsel -ib; commandline -f end-selection repaint-mode'commandline --selection专门获取可视模式的选中内容,xsel -ib负责将内容写入系统剪贴板
内容的提问来源于stack exchange,提问作者ReneFroger
相关产品推荐
相关产品推荐

