1

現在の関数の引数リストにジャンプするための Vim ショートカットはありますか? 関数の引数リストをいじらなければならないことがよくありますが、最終的にそれに到達するまで ?def または ?function または 10k または what-have-you を実行しなければならないのはちょっと面倒です。それから /( または t(または 5e を押して引数リストの正しい位置に移動するなど. たとえば、a を押すだけで、引数リストの末尾/先頭で即座に挿入モードに入れることができれば素晴らしいと思います.

可能なアプローチ:

  • 折りたたみ
  • タグのサポート (ctags)

また、私は Python を使用しているため、中括弧に基づくソリューションは残念ながら機能しません。

そのようなショートカットが存在しない場合は、ショートカットを作成して、回答としてここに投稿します。:-)

4

3 に答える 3

3

免責事項、私はPythonを知りません、私はPython関数があなたの質問から「function」または「def」によって識別できると思います。結果として正規表現を変更するだけです。

次のようなものかもしれません:

   :nnoremap <buffer> [m :call search('def\|function', 'b')<cr>f(

注意:

  • 検索履歴を台無しにしないためにsearch()を使用しました; searchpair()は、前の関数ではなく、内部の関数の定義にのみジャンプするため、より適切な選択となる可能性があります。
  • これはPythonでのみ機能することを目的としているため、Python以外のファイルのキーバインディングを台無しにしないために<buffer>を使用します。このマッピングは、Pythonftpluginで最もよく定義されています。

HTH、

于 2008-09-18T19:01:43.707 に答える
1

関数の先頭に到達する簡単な方法は、[[ を使用することです。だからあなたは使う

map ,a ma[[kf(a

関数定義に移動し、最初に出現する "(" を検索してから、挿入モードにします。

于 2009-01-08T20:01:52.697 に答える
1

map ,a ma[{F(a

,a を押して引数リストに移動し、`a を押して ,a を呼び出したときの場所に戻ります。警告: [{ は一致しない最後の { 文字にジャンプするため、ループまたはその他の制御構造内にいる場合は、代わりにその先頭に移動します。

関数の先頭に確実に到達する方法がわかりません。タブ操作に一貫性がある場合は、次のようなことができる場合があります。

map ,a ma?function :nohlf(a

関数を定義する前に単一のタブを使用しない場合は、適切な値に変更します。

于 2008-09-18T18:23:51.957 に答える