gfのようにカーソルの下でファイル名を開きますが、新しいタブ(または分割)ですか?


43

通常モードのコマンドgfは、カーソルが現在あるパスのファイルに移動します。

ただし、現在のウィンドウでは、現在のテキストが置き換えられます。つまり、後で戻るには明示的に戻る必要があり、潜在的に現在のバッファに変更を書き込む必要があるということです。

代わりに新しいタブビューでカーソルの下のファイルを開くことで可能だと確信していますか?


3
'hidden'オプション(set hidden)をオンにすると、保存されていないバッファーから移動できます。私にとっては、これは生産性を大幅に向上させるものであり、分割やタブに頼るのをやめるには不可欠でした。
tommcdo

回答:


56

編集:Vimにはデフォルトで水平分割ケース用の2つのマッピングがあるため、垂直分割ケース用のきれいな対称マッピングを提案します。

「カーソル下のファイル」を編集する方法はいくつかありますがgf、@ alexander-myshovが言及しているように、新しいタブページで編集するために確実に再マッピングできますが、つまり、新しいタブページで編集するには2つの方法がありますが、現在のウィンドウで編集しますが、これも必要に応じて行います。標準のマッピングを使用することは難しいことではないですが、あなたがそれらのいずれかに再マッピングしたい場合はgf、私がお勧めしたいの切り替えあなたがそれらの失うことはありませいずれかを実行しそうという、マッピングを。

カーソルの下のファイル名を編集する方法のいくつかは

  • gf -同じウィンドウのカーソルの下にある既存のファイルを編集する
  • C-Wf -分割ウィンドウのカーソルの下にある既存のファイルを編集する
  • C-WC-F -分割ウィンドウのカーソルの下にある既存のファイルを編集する
  • C-Wgf -新しいタブページのカーソルの下にある既存のファイルを編集する

垂直分割でカーソルの下にある既存のファイルを編集するための標準のマッピングはありませんが、最初にウィンドウを垂直に分割してから、現在のウィンドウでカーソルの下にあるファイルを編集することで実現できます。

  • C-Wv+ gf-垂直に分割されたウィンドウのカーソルの下にある既存のファイルを編集する

上記のように、水平分割でカーソルの下にあるファイルを編集するための2つのデフォルトマッピングがあります。したがって、それらの1つを上記のキー文字列に再マッピングし、マップのグループを拡張して、垂直分割ケースもカバーできます。もちろん、何でもバインドできますが、これは対称性をうまく完成させるようです:nnoremap <C-W><C-F> <C-W>vgf。今、あなたは持っています

  • gf -同じウィンドウのカーソルの下にある既存のファイルを編集する
  • C-Wf -分割ウィンドウのカーソルの下にある既存のファイルを編集する
  • C-WC-F -垂直に分割されたウィンドウのカーソルの下にある既存のファイルを編集する
  • C-Wgf -新しいタブページのカーソルの下にある既存のファイルを編集する

カーソルの下のファイル名の後に行番号が続く場合、ファイル内の特定の行に移動することもできます。あなたが持っている場合

filename:10

ファイルを編集し、カーソルを10行目に移動させることができますgF。同等のために真であるC-WF分割のとC-WgFタブページのため。ここでは、垂直分割の対称性を完成させるのは簡単ではありませんが、でC-WC-S-F取得したマップは、候補としてデフォルトマップのor + をnnoremap <C-W><C-S-F> <C-W>vgF模倣することをお勧めします。FShiftf

これ:は一例であり、ファイル名文字以外の任意の文字を使用できます(を参照:h 'isfname')。


これらのすべてのコマンドには、次のようなアップルソースが付属しています。

  • ワイルドチャーを展開する
  • 'path'オプションに応じて、現在のディレクトリよりも多くの場所を見る
  • 'suffixesadd'オプションに従って、ファイル拡張子をファイル名に追加する
  • それ以外の場合は、'includeexpr'オプションに従って、指定されたfilnameを変更して一致を見つけます

:help gfこれらのさまざまなオプションの詳細とヘルプトピックを参照してください。


カーソル名の下にファイル名が存在しないファイルは、あなたがより良いと標準の編集コマンドを使用してのものであってもよい場合<cfile>のように、

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

もちろん、これらを使用:spl+10 filenameすると、カーソルを特定の行:tabe+/cologne filenameに移動したり、パターンの最初の出現箇所にカーソルを移動したりすることができます。


明確な説明が付いた+1最高のコメント。複数のトピックに分かれたドキュメントよりもはるかに優れています。
確率が大好き

8

これにはバインディングを使用します。

新しいウィンドウで開く(分割):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

新しいタブで開く:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

これも確認してください: :help CTRL-W_gf


これらはあなたにとって間違いなく機能しますか?Vimはgf他の何かにリマップすることを望んでいないようです。でもnnoremap gf :echo "hello"<CR> 、まだ新しいバッファ内のカーソルの下のファイルを開きます(はい、私はのvimrc調達)。
tandrewnichols

ああ、気にしない-プラグインが干渉している。
tandrewnichols
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.