読者です 読者をやめる 読者になる 読者になる

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

acp.vim で補完候補が表示されてるときにEnter押したら入力されてる途中までの文字列で決定して改行する (できなかった)

vim

なんつーわかりづらいタイトル.
AutoComplPop のときはできてたんだけど,acp.vimのバージョンになってから例えば,

fal

まで入力してて,補完候補に

false
FALSE

みたいに表示されてるとき,ここでEnter押すと,最初の候補が挿入されて改行されてしまうようになってしまっていた。(つまり,false となって改行されていた)
で,ずっとなんでだろって思ってたんだけど,vimrc に以下のような設定を書いてたのが問題だったくさい.

inoremap <expr> <CR> pumvisible() ? "\<C-Y>\<CR>" : "\<CR>"

これは前のAutoComplPopのときに,この問題を解決するために本体に手をいれてこの設定を加えてたんだけど*1,どうやらこの設定ではだめになってたようで。

pumvisible() 関数はポップアップが表示されてるかどうかを判断する関数らしいので(それを知らなかった),まあ挙動がす気になるように修正。

inoremap <expr> <CR> pumvisible() ? "\<C-p>\<CR>" : "\<CR>"

これで,

fal

の状態で Enter を押したときに,

fal

で下の行にカーソルがある感じの挙動になった。

細かいけどこういうのって割と身体に染み付いちゃってるからシビアな設定だよね。



追記:
いや,これじゃだめだった,普通に選択できないwどうすりゃいいんだべ

*1:なんでだっけな, http://subtech.g.hatena.ne.jp/cho45/20071111/1194766579 このへんの見て設定してたのかも