0

私はvimでこのマッピングを持っています

map f :Ag --node_modules を無視

コマンドの最後に「getcwd()」の結果を追加したいと思います。

次のようなもの(機能していませんが、アイデアが得られます):

map f :Ag --node_modules を無視 :getcwd() を呼び出す

したがって、vimのコマンドは次のようになります

:Ag --node_modules ~/project を無視

より多くのコンテキスト

ag.vimを使用して、vimを介してシルバー検索を使用しています。ag コマンドで現在の作業ディレクトリを指定する通常モードのマッピングが必要です。

https://github.com/ggreer/the_silver_searcher

https://github.com/rking/ag.vim

ありがとうございました。JF

4

3 に答える 3

3

Vim の評価規則は、ほとんどのプログラミング言語とは異なります。:execute変数を評価するために使用する必要があります。それ以外の場合は、文字どおりに解釈されます。つまり、Vim は変数名自体を引数として使用します。

nnoremap f :execute 'Ag blahblah ' . getcwd()<CR>

これは、@Kent の<expr>.

PS: ;を使用する必要があります。:noremapこれにより、マッピングが再マッピングと再帰の影響を受けなくなります。

于 2014-12-04T15:21:09.307 に答える
0

さらに別の方法は、式レジスタ経由で<c-r>=式を実行することです。getcwd()

nnoremap <leader>f :Ag blahblah <c-r>=getcwd()<cr><c-b><s-right><s-right>><space>''<left>

の後に部分を追加して、後に<cr>単一引用符を挿入blahblahし、それらの間にカーソルを置きました。

注:fコマンドを強調しないでください。とても便利です。を参照してください:h f。リーダーの使用を検討してください。見る:h mapleader

詳細については、次を参照してください。

:h c_ctrl-r
:h "=
:h c_ctrl-b
:h c_<s-right>
于 2014-12-07T09:38:57.560 に答える