viで自分のショートカットをマップしようとしています。ショートカットを呼び出している関数の宣言を含む分割ウィンドウを開くことができるようにしたいと考えています。私のvimrcで次のようなもの:
nmap <unique> <silent> <Leader>tg :exe 'vsplit'\| equivalent of <C-]>
しかし、コマンドモードの C-] に相当するものは何ですか?
タグを含む行で vim を開くにfoobar
は、シェル コマンドラインで次のように入力します。
vim -t foobar
vim コマンドラインで同じタグにジャンプするには、次のように入力します。
:tag foobar
ウィンドウを分割して新しいウィンドウのタグにジャンプする場合は、vim のコマンドラインで次のように入力します。
:stag foobar
「カーソルの下の単語」を指定するキーストロークが必要な場合は、この質問に従って、 CTRL+ R CTRL+を使用してWそれを取得できます。
:tag CTRL+R CTRL+W
次のものも使用できます。
:nmap <leader>w :tag <c-r>=expand("<cword>")<c-r>
これで入力<leader>+w
(これは\私のセットアップにあるので、 を押します\w)は入力と同じになります:tag <word under the cursor>
参照:help CTRL-]:
CTRL-] カーソル下のキーワードの定義にジャンプします。":tag {ident}" と同じです。ここで、{ident} はカーソルの下または後のキーワードです。
これに組み込みがあるかどうかはわかりませんが、次はカーソルの「下または後」のキーワードに一致するようです:
matchstr(getline('.'), '\%'.col('.').'c\s*\zs\k\+')
カーソルの下にある単語の定義にジャンプできますexe "tag " . expand("<cword>")
。エキスパンド関数は、特別なトークンをその意味に置き換えます。これには、カーソルの下のファイル名、現在のファイル名などが含まれます。フルセットのexpand()関数については、Vimのヘルプを参照してください。
または、:exコマンドから通常モードのキーシーケンスを実行できる:normalコマンドを使用することもできます。
次のように書くこともできます (たとえば Ctrl-Q にマップするため):
:nmap <C-Q> <C-]>
このような場合、ネストされた/再帰的なマッピングを避けるために :nn[oremap] を検討することもできます。