Zsh shift + control + arrows

时间:2014-07-23 13:33:17

标签: shell zsh archlinux

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

在zsh中逐字逐句选择

我能够使用我在不同相关主题上找到的一些愚蠢的黑客和解决方案来完成我列表中的第2点,但我无法得到一个简单的解决方案来让我的第3点正常工作...... 有没有人知道如何做到这一点?我正在使用gnome-terminal,但如果需要做我想做的事情,我不介意切换到另一个,只要新的允许我使用鼠标复制/粘贴/滚动。

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

1 个答案:

答案 0 :(得分:1)

好的,这是我目前在.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

有了这个,我可以:

  • 用控件一字一句地移动

  • 选择要移位的区域(唯一的问题,我在标记区域没有视觉效果)

  • 有效的删除键

很抱歉混淆,我目前在xterm终端上(刚刚将我的桌面环境改为xfce4)

我仍然希望使用ctrl + shift +箭头来标记要杀死的区域,还没有能够做到这一点,因为我不知道如何通过前进移动字符数/反向词.. 在一个更美好的世界里,我还希望有一个突出显示的标记区域... =) 任何的想法?