Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell Zsh移位+;控制+;箭_Shell_Zsh_Archlinux - Fatal编程技术网

Shell Zsh移位+;控制+;箭

Shell Zsh移位+;控制+;箭,shell,zsh,archlinux,Shell,Zsh,Archlinux,我正在拼命寻找一种在zsh shell中实现经典导航和选择的方法。。 意思是,我希望能够: -使用shift+left/right在zsh中逐个选择字符 -使用control+左/右在zsh中逐字移动 -使用ctrl+shift+left/right在zsh中逐字选择 我已经能够,使用我在不同相关主题上找到的一些愚蠢的黑客和解决方案,完成我列表中的前两点,但我无法找到一个简单的解决方案来让我的第三点正常工作。。。 有人知道怎么做吗?我正在使用gnome终端,但如果需要做我想做的事情,我不介意切换

我正在拼命寻找一种在zsh shell中实现经典导航和选择的方法。。 意思是,我希望能够: -使用shift+left/right在zsh中逐个选择字符 -使用control+左/右在zsh中逐字移动 -使用ctrl+shift+left/right在zsh中逐字选择

我已经能够,使用我在不同相关主题上找到的一些愚蠢的黑客和解决方案,完成我列表中的前两点,但我无法找到一个简单的解决方案来让我的第三点正常工作。。。 有人知道怎么做吗?我正在使用gnome终端,但如果需要做我想做的事情,我不介意切换到其他终端,只要新的终端允许我使用鼠标复制/粘贴/滚动


我希望您能解决我的问题=)

好的,这就是我目前在.zshrc中控制键绑定的功能:

function zle-line-init {
    marking=0
}
zle -N zle-line-init

function select-char-right {
    if (( $marking != 1 ))
    then
        marking=1
        zle set-mark-command
    fi
    zle .forward-char
}
zle -N select-char-right

function select-char-left {
    if (( $marking != 1 ))
    then
        marking=1
        zle set-mark-command
    fi
    zle .backward-char
}
zle -N select-char-left

function forward-char {
    if (( $marking == 1 ))
    then
        marking=0
        NUMERIC=-1 zle set-mark-command
    fi
    zle .forward-char
}
zle -N forward-char

function backward-char {
    if (( $marking == 1 ))
    then
        marking=0
        NUMERIC=-1 zle set-mark-command
    fi
    zle .backward-char
}
zle -N backward-char

function delete-char {
    if (( $marking == 1 ))
    then
        zle kill-region
        marking=0
    else
        zle .delete-char
    fi
}
zle -N delete-char

bindkey ';6D' select-word-left ## not working yet                                                                                                                                                                                                                               
bindkey ';6C' select-word-right ## not working yet                                                                                                                                                                                                                              
bindkey ';2D' select-char-left   # assuming xterm                                                                                                                                                                                                                               
bindkey ';2C' select-char-right  # assuming xterm                                                                                                                                                                                                                               
bindkey ';5D' backward-word
bindkey ';5C' forward-word
bindkey '^[[3~' delete-char
有了这个,我可以:

  • 使用控件逐字移动

  • 用shift键选择要删除的区域(唯一的问题是,我看不到标记的区域)

  • 一个有效的删除键

很抱歉造成混淆,我目前使用的是xterm终端(刚刚将我的桌面环境更改为xfce4)

我仍然想用ctrl+shift+arrows标记一个要杀死的区域,但我还不能这样做,因为我不知道如何通过向前/向后移动单词来获得字符数。。 在一个更好的世界里,我还希望有一个突出显示的标记区域…=)
有什么想法吗

你能分享一下你已经拥有的吗?在第三种情况下,究竟什么不起作用?此外,您是否希望模拟鼠标选择(这将是终端的一项功能)或为zsh区域创建更方便的绑定(
set mark command
)?