2015-07-13 83 views
1

我正在使用terminfo來查找他們控制的序列是在我的終端中左(右,...)鍵,以便我可以映射它在我的zshrc這樣一些有用的東西(左移動):如何從Zsh中的terminfo中獲取控制字符Ctrl + +

typeset -A key 
left=${terminfo[kcub1]} 
bindkey "$left" backward-char 

(還有一些其他的東西來得到這個工作,看到source)。 這很有幫助,因爲我使用了多個終端仿真器,並且這些控制序列發生了變化。例如我使用Gnome終端在Ubuntu到ssh到Debian的框,然後使用tmux裏面那個......

但我怎麼能找出的CTRL + LEFT從鍵代碼(和RIGHT ...) TERMINFO?我想將這些地圖映射到左/右。

回答

0

控制左箭頭等不是標準的terminfo功能。 ncurses提供了這些擴展(參見terminal database中的討論),知道如何使用擴展的應用程序可以獲取它們。作爲開始,他們應該撥打use_extended_names(zsh不)。

但是— zsh不使用擴展名。它的源代碼暗示它將使用terminfo庫的,例如strnames(如果有的話),但是ncurses在一個單獨的內存區域中實現擴展。 (terminfo數據僅有10年左右的歷史,擴展本身的日期爲1999年的ncurses 5.0)。

因此(使用zsh的當前代碼),看起來你不能像你的例子所顯示的那樣使用zsh的內置功能來做到這一點。您可以使用tput解決該問題。

擴展名稱基於的xterm對改性劑的代碼,它是在該終端數據庫中的xterm+pcfkeys條目上方的評論中列出:

  • 控制左箭頭"kLFT5"
  • 控制右箭頭"kRIT5"
相關問題