2

私は通常、cscope でインデックス付けされたコードベースのファイル間を次のように切り替えます。

:cscope find f <filename>

毎回「:cscope find f」と入力する必要がないように、キーボード ショートカットを定義しようとしています。このショートカットを押すと入力プロンプトが表示され、cscope データベースのファイル名の一部を入力します。複数のファイルがある場合は、ファイルのリストが表示され、そこから目的のファイルを選択できます。ここまでできましたが、VIM スクリプトにまったく習熟していないため、完了することができません。(これまでにコード化したものは、Eelvexのおかげで別の質問から取得したものです) .

誰かが私のために以下のスクリプトを修正できますか? このショートカットを使用しようとすると、多数のエラーが発生します

function! GetPat()
  call inputsave()
  let filename = input("Enter filename: ")
  call inputrestore()
  return filename
endfunction
map ` :cscope find f '.GetPat().'<CR>
4

1 に答える 1

2

マッピングは、入力を待ってから続行することはありません。また、マッピングは間違っています。マッピングはテキストを入力したかのように機能することを覚えておいてください。(テストされていません):

noremap <expr> ` ':cscope find f '.GetPat()."\<CR>"

しかし、次の理由だけではありません。

noremap ` :cscope find f<space>

これにより、最後のスペースの後にパターンを入力してヒットする準備が整いますenter

于 2011-03-24T06:42:39.170 に答える