查了一下發現解法是將 ctrl + l 對應到清螢幕的功能, 總結來說, 就是這麼設:
set -o vi bind -m vi-insert "C-l":clear-screen其實以上都是在設定 readline 的行為, 詳細內容見 man bash (搜 "bind \[" 跳到相關章節) 和 man 3 readline (是的, 它是個 function!) 。clear-screen 是 readline 的功能之一。
與本文無關的花絮
好奇之下試著用 C 呼叫 readline:/* f.c */ #include <stdio.h> #include <readline/readline.h> #include <readline/history.h> int main(void) { char *s = readline ("promp> "); printf("%s\n", s); }編譯方式:
$ gcc f.c -lreadline -o f在編譯前要先確定有裝 readline.h 和 libreadline.so, 不然編譯後會出現「error: readline/readline.h: No such file or directory」。
Ubuntu 下安裝方式是:
# 用 apt-file 找出 readline.h 放在那個 package 裡 $ apt-file search readline/readline.h ghc6-doc: /usr/share/doc/ghc6-doc/libraries/readline/readline.haddock guile-1.6-dev: /usr/include/guile-readline/readline.h libreadline5-dev: /usr/include/readline/readline.h $ sudo aptitude install libreadline5-dev
玩了一下還滿有趣的。
沒有留言:
張貼留言