
私はArch Linux(4.13.11)を使っていますが、私のには.bashrc
、ファイルを検索するカスタム関数があります。フジフ次に、そのファイルをデフォルトのエディターで開きます。
# Search a file with fzf inside a Tmux pane and then open the file in an editor
fzf_then_open_in_editor() {
local file=$(fzf-tmux)
# Open the file if it exists
if [ -n "$file" ]; then
# Use the default editor if it's defined, otherwise Vim
${EDITOR:-vim} "$file"
fi
}
.inputrc
シェルに Vim のようなキーバインディングを使用するように を設定しました。
set editing-mode vi
できれば、コマンド モードでCtrl+ を押してo関数を呼び出すことができますfzf_then_open_in_editor
。
私は試した
set keymap vi-command
"\C-o": fzf_then_open_in_editor
しかしそれはうまくいきませんでした。
では.inputrc
、 で定義された関数のキーバインディングを作成するにはどうすればよいですか.bashrc
?
答え1
フォームはkey: function
、readline 組み込み関数のみを受け入れます。ご存知のとおり、テキストを入力するには、引用符で囲むマクロが必要です。key: "my macro\r"
通常はコマンド プロンプトで既に挿入モードになっているため、挿入コマンドで開始する必要がある理由がわかりません。
関数を呼び出す場合は、オプション を指定したシェル コマンド バインディングを使用します-x
。このバインディングを に配置する方法はわかりません~/.inputrc
が、 に次のコマンドを配置できます.bashrc
。
bind -x '"\C-o": fzf_then_open_in_editor'
答え2
これを以下に追加することで、望みどおりの結果が得られました.inputrc
:
set keymap vi-command
# Go to insert mode with i, write the function's name, then hit enter
"\C-o": "ifzf_then_open_in_editor\015"
\015
のキーコードはどこですかEnter。
これは機能しますが、よりエレガントな解決策があるかどうか興味があります。