質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

解決済

1回答

1842閲覧

補完リストを呼び出した時のキーをVim Scriptから取得したい

norio13

総合スコア53

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

0グッド

0クリップ

投稿2016/02/29 07:56

編集2016/02/29 08:14

インサートモードにて、下記に記載したキーのどれを入力して補完リストを表示させたかを知る方法はございますか?

i_CTRL-N
i_CTRL-P
i_CTRL-X_CTRL-L
i_CTRL-X_CTRL-N
i_CTRL-X_CTRL-K
i_CTRL-X_CTRL-T
i_CTRL-X_CTRL-I
i_CTRL-X_CTRL-]
i_CTRL-X_CTRL-F
i_CTRL-X_CTRL-D
i_CTRL-X_CTRL-V
i_CTRL-X_CTRL-U
i_CTRL-X_CTRL-O

知りたい理由も記載しておきます。
補完リストを表示中に<C-u>を押すことで、補完リストを閉じて再度補完リストを表示させるマップが欲しいからです。
次のようにマップを定義してみましたが、再度補完リストを呼び出すときにi_CTRL_N固定なので不完全です。

vim

1 inoremap <expr><C-u> pumvisible() ? "\<C-u>\<C-n>" : "\<C-u>"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

直接キーを取得できるわけではないのですがそれっぽいことが出来たので解決しました。
行数短めで見やすいように<C-n><C-x><C-o>のみ対応したコードを載せます。

vim

1inoremap <expr><C-n> pumvisible() ? "\<C-n>" : <SID>F(0) 2inoremap <expr><C-x><C-o> pumvisible() ? "\<C-x>\<C-o>" : <SID>F(1) 3 4function! s:F(n) abort 5 let l:s = [ 6 \ "\<C-n>", 7 \ "\<C-x>\<C-o>", 8 \ ] 9 execute 'inoremap <expr><C-u> pumvisible() ? "\<C-u>' . l:s[a:n] . '" : "\<C-u>"' 10 return l:s[a:n] 11endfunction

もっとシンプルなやり方がありそうな気がします。
もっといい方法を知っている方いらっしゃいましたらアドバイスお願いします。

投稿2016/03/02 08:21

編集2016/03/02 08:28
norio13

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問