先日、fzf.vimでGFiles
コマンドが使えない問題に悩んでいたのですが、無事解決したのでメモ。
かなりニッチな問題ですが、予想外の箇所が影響しておりハマったので共有しておきます。
問題:fzf.vimでGFilesコマンドでエラー
GFiles
コマンドは、Gitで管理されたファイル(git ls-files)を対象にあいまい検索を行えるコマンドです。
このコマンドを実行したところ、エラーとなってしまいました。
実行コマンド
:GFiles
コマンド実行結果
function fzf#vim#gitfiles[6]..<SNR>82_fzf[18]..fzf#run[64]..<SNR>46_execute_term[73]..<SNR>46_dopopd の処理中にエラーが検出されました: 行 20: E716: 辞書型にキーが存在しません: dir && (!&autochdir || w:fzf_pushd.bufname ==# bufname('')) E15: 無効な式です: s:fzf_getcwd() ==# w:fzf_pushd.dir && (!&autochdir || w:fzf_pushd.bufname ==# bufname('')) function fzf#vim#gitfiles の処理中にエラーが検出されました: 行 6: E171: :endif がありません 続けるにはENTERを押すかコマンドを入力してください
原因:config.fish で echo を使用しているとエラーが発生
色々検索したところ、本家のissues に同事象が記載されていました。 github.com
以下、引用
Everything works correctly, except :GFiles. When I run :GFiles from a git repo, I get:
Error detected while processing function fzf#vim#gitfiles[6]..
103_fzf[18]..fzf#run[64].. 27_execute_term[73].. 27_dopopd:
line 20:
E716: Key not present in Dictionary: dir
E15: Invalid expression: s:fzf_getcwd() ==# w:fzf_pushd.dir
Error detected while processing function fzf#vim#gitfiles:
line 6:
E171: Missing :endif
has any echo in your fish config?
remove that echo may be resolve the problem
shellにfish
を利用している
かつ
~/.config/fish/config.fish
内でecho
コマンドを利用している
場合にこの事象が再現する旨のコメントがあり、まさにその状況でした。
対応方法:config.fish で echo コマンドを削除
執筆時点(2019/09/10)では issue Open の状態でした。
暫定対処として~/.config/fish/config.fish
の echo
コマンド記述部を削除したところ上手く動作しました。
学び
まずは本家のissueを確認
エラーとなったとき、fzf vim GFiles error
などで雑にググったのですが、似てるけど別の問題がヒットし、なかなかこのissueにたどり着けませんでした。
エラーのときは「まずは本家のissueを確認する」を徹底しよう、という学びを得ました。苦笑
Google の言語設定を英語にしておく
Googleでの検索時、言語を日本語で検索していたのですが、英語に変更すると検索にヒットする記事が変わり、求めていた記事がトップに表示されました。 技術情報をを検索するときは言語設定を英語にしておくと良いかもしれません。
日本語で検索した場合
英語で検索した場合
参考:再現時の各Version
mac OS Mojave
⟩ sw_vers ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G95
fish
⟩ fish -v fish, version 3.0.2
neovim
⟩ nvim -v NVIM v0.3.8 Build type: Release LuaJIT 2.0.5 Compilation: /usr/local/Homebrew/Library/Homebrew/shims/mac/super/clang -Wconversion -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/tmp/neovim-20190704-11886-1ukicoc/neovim-0.3.8/build/config -I/tmp/neovim-20190704-11886-1ukicoc/neovim-0.3.8/src -I/usr/local/include -I/usr/local/opt/gettext/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include -I/tmp/neovim-20190704-11886-1ukicoc/neovim-0.3.8/build/src/nvim/auto -I/tmp/neovim-20190704-11886-1ukicoc/neovim-0.3.8/build/include Compiled by brew@Mojave.local Features: +acl +iconv +jemalloc +tui See ":help feature-compile" システム vimrc: "$VIM/sysinit.vim" 省略時の $VIM: "/usr/local/Cellar/neovim/0.3.8/share/nvim" Run :checkhealth for more info