私は Ack ( https://github.com/mileszs/ack.vim ) を--literal
フラグ付きで使用して、Vim でプロジェクトを検索しています。%
または#
文字を含む文字列を検索するたびに、検索が期待どおりに一致しないことに気付きました。いくつかの調査を行ったところ、Vim がコマンドでこれらの文字を展開するためであることがわかりました (%
は現在のファイルであり#
、何か他のものであることがわかりません)。
これらのシンボルがコード内でかなり頻繁に出てくることを考えると、これは検索を実行するときのかなり迷惑な動作です。検索が期待どおりに機能するように、できれば自動的にそれらをエスケープする方法はありますか? 私の現在のマッピングは次のとおりnnoremap <leader>al :Ack --literal<space>
です。
例
CSS ファイルのどこかにセレクター#body
があり、それを見つけたいとします。これらは私が試したことです(うまくいきませんでした):
:Ack --literal #body
:Ack --literal \#body
:Ack --literal "#body"
:Ack --literal "\#body"
ここでエスケープが通常どおり機能しない理由、またはこれが何を探しているのかについてのアイデアはありますか? これらの例は何にも一致しませんでした。
解決
文字をダブルエスケープすることで機能するようになりました。たとえば、結果ウィンドウのステータスラインに:Ack --literal "\\#body"
表示され、期待される結果が表示されます。:ack -H --nocolor --nogroup --column --literal "#body"
引用符も必要なようです。