2014-07-23 113 views
1

我正拼命尋找一種在zsh shell中啓用經典導航和選擇的方法.. 含義,我希望能夠: - 在zsh中使用shift + left /右 - 通過詞的zsh使用控制舉措字+左/右 - 選擇一個字一個字的zsh使用Ctrl + Shift +左/右Zsh shift + control + arrow

我已經能夠使用一些愚蠢的黑客和解決方案,我發現不同的相關主題,做我的列表中的2個第一點,但我不能得到一個簡單的解決方案,使我的第三點正常工作... 有沒有人有關於如何做到這一點的想法?我使用的是gnome-terminal,但是如果需要做我想做的事情,我不介意切換到另一個,只要新的允許我使用鼠標複製/粘貼/滾動。

我希望你有一個解決我的問題=)

+0

你能分享一下,你已經擁有了什麼?究竟在第三種情況下不起作用?此外,你是否正在模擬鼠標選擇(這將是終端的一個功能),或者爲zsh區域創建更方便的綁定('set-mark-command')? – Adaephon

回答

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 

這一點,我可以:通過字與控制

    • 移動字選擇到d的區域elete與移(唯一的問題,我對標記的區域沒有視覺)

    • 刪除鍵,工程

    很抱歉的混亂,我目前的xterm終端上(只是改變了我的桌面環境到xfce4)

    我仍然想用ctrl + shift +箭頭標記一個要殺死的區域,還沒有能夠做到這一點,因爲我不知道如何獲得字符的數量與前進/反向詞.. 在一個更美好的世界中,我也想有一個突出顯示的標記區域... =) 有什麼想法?