2013-11-03 5 views
9

man bashを検索しましたが、現在のすべてのbind -xキーバインドをリストアップしているものは見つかりませんでした。私はそれを行うことができる方法はありますか?私は、次のことを試してみました:リストbash "bind -x"バインディング

$ bind -x '"\C-`":"echo hello"' 
# test binding: press CTRL+` 
hello 
# Binding works! 
$ bind -p | grep 'hello' 
# no output 
$ bind -S 
# no output 

だから、私は、現在アクティブなすべてのbind -xの一覧を見ることができる方法はありますか?

$ help bind 
     ... 
     -x keyseq:shell-command Cause SHELL-COMMAND to be executed when 
           KEYSEQ is entered. 
     -X      List key sequences bound with -x and 
           associated commands in a form that can be 
           reused as input. 
     ... 
$ 

答えて

3

は思えます。すべての関数名(とバインディング)を表示

bind -P 

説明

  -P  List current readline function names and bindings. 
      -p  Display readline function names and bindings in such a 
       way that they can be re-read. 

サンプル出力

set-mark can be found on "\[email protected]", "\e ". 
shell-expand-line can be found on "\e\C-e". 
start-kbd-macro can be found on "\C-x(". 
tilde-expand can be found on "\e&". 
transpose-chars can be found on "\C-t". 
transpose-words can be found on "\et". 
undo can be found on "\C-x\C-u", "\C-_". 
unix-line-discard can be found on "\C-u". 
unix-word-rubout can be found on "\C-w". 
upcase-word can be found on "\eu". 
yank can be found on "\C-y". 
yank-last-arg can be found on "\e.", "\e_". 
yank-nth-arg can be found on "\e\C-y". 
yank-pop can be found on "\ey". 

manページ

-

バインド:しかし、資本金 'P' は、作業を行います

それはそれのためのmanページを見つけることが意外に難しいので、ここにある:

bind [-m keymap] [-lpsvPSVX] 
     bind [-m keymap] [-q function] [-u function] [-r keyseq] 
     bind [-m keymap] -f filename 
     bind [-m keymap] -x keyseq:shell-command 
     bind [-m keymap] keyseq:function-name 
     bind readline-command 
       Display current readline key and function bindings, bind a key 
       sequence to a readline function or macro, or set a readline 
       variable. Each non-option argument is a command as it would 
       appear in .inputrc, but each binding or command must be passed 
       as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. 
       Options, if supplied, have the following meanings: 
       -m keymap 
        Use keymap as the keymap to be affected by the subsequent 
        bindings. Acceptable keymap names are emacs, 
        emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, 
        vi-command, and vi-insert. vi is equivalent to 
        vi-command; emacs is equivalent to emacs-standard. 
       -l  List the names of all readline functions. 
       -p  Display readline function names and bindings in such a 
        way that they can be re-read. 
       -P  List current readline function names and bindings. 
       -s  Display readline key sequences bound to macros and the 
        strings they output in such a way that they can be re- 
        read. 
       -S  Display readline key sequences bound to macros and the 
        strings they output. 
       -v  Display readline variable names and values in such a way 
        that they can be re-read. 
       -V  List current readline variable names and values. 
       -f filename 
        Read key bindings from filename. 
       -q function 
        Query about which keys invoke the named function. 
       -u function 
        Unbind all keys bound to the named function. 
       -r keyseq 
        Remove any current binding for keyseq. 
       -x keyseq:shell-command 
        Cause shell-command to be executed whenever keyseq is 
        entered. When shell-command is executed, the shell sets 
        the READLINE_LINE variable to the contents of the 
        readline line buffer and the READLINE_POINT variable to 
        the current location of the insertion point. If the 
        executed command changes the value of READLINE_LINE or 
        READLINE_POINT, those new values will be reflected in the 
        editing state. 
       -X  List all key sequences bound to shell commands and the 
        associated commands in a format that can be reused as 
        input. 

       The return value is 0 unless an unrecognized option is given or 
       an error occurred. 

+1

私はあなたが使用しているのbashのバージョンを知っているが、私は、 '-X'が'無効option'を返すバインドするためにはありません。実際、 'help bind'は' -X'を私に挙げていません。私のマシンでは、 'bash --version'は' version 4.2.45(1)-release(x86_64-pc-linux-gnu) 'を生成します。 – Samee

+1

私は4.3(beta)を使用しています。私はそれが新しい追加機能であることを知らなかった。 :) – pynexj

+0

ハァッ!だから私はちょうどぴったりしていると思う:-P 4.2のリリーススケジュール/回避策をご存知ですか? – Samee

1

上記の答えは私のためのbash 4.3.48に空の出力を返しました:あなたは(バッシュ4.3に新)bind -Xを使用することができるように

+0

マニュアルページを表示するにはどのようなコマンドを使用しますか? 'man bind'を実行するたびに、ソケットに名前をバインドするためのマンページが表示されます。 – kshenoy

+0

私はWebベースのmanページからしかこの情報に到達できませんでした。私が漠然としたコマンドラインから、この情報を見つけるのは難しいと思いました。 –

+0

https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#Bash-Builtins – tripleee