VIMで効率的にバッファ、ウィンドウ、タブを使用する


よりvimのヒントやトリックに従ってください!
Vimは、ほとんどの編集者のようにされたことがない.私は別のエディタを使用している(メモ帳+、原子、VSCode、はい、Emacs、簡単に).ほとんどのエディタでは、タブとWindowsシステムを使用します.Vimはバッファ、ウィンドウ、タブを持っています.これらの抽象化VIM使用のいくつかは異なっています.
あなたがVimに新しいならば、私はバッファ、ウインドウとタブが何であるかについて説明します.私は、それらを効率的に使う方法も示します.
目次:
  • Vim buffers
  • Vim windows
  • Vim tabs
  • Thinking in 3D
  • Using buffers, windows, and tabs efficiently
  • Resources
  • 前に起動すると、しない場合はset hidden あなたの~/.vimrc とソース.このオプションがなければ、変更されたバッファーが「隠し」になるたびに、VMはファイルを保存するようプロンプトが表示されます.この設定の詳細についてはthis article and :h hidden .

    Vimバッファ


    バッファーはファイルのメモリ内のテキストです.
    VIMでファイルを開くと、新しいバッファが作成されます.端末からこうします:
    vim file1.js
    

    これを実行した後、Vimはfile1.js . このバッファはメモリに記憶される.
    出口vim.コンソールに戻ります.
    vim file1.js file2.js
    
    Vimは2つのバッファを作成しますfile1.js と1つfile2.js . あなたはおそらくまだ見ているfile1.js .

    しかし、今vimは2バッファがあります.すべてのバッファを見ることができます:ls (or :buffers , or :files ).

    そこにはいくつかの方法がありますfile1.js バッファとfile2.js バッファ
  • :bnext 次のバッファに移動する:bprev 帰る
  • :buffer , 次に名前を入力します.Vimオートコンプリート<Tab>
  • :bufferN ここでNはバッファ番号である.:buffer2 例えば、バッファCount 2にジャンプする.
  • あなたの最後の<Ctrl-O> and <Ctrl-i> . これはバッファ固有ではありませんが、動作します.
  • 前のファイルの切り替え<Ctrl-^>
  • メソッドCount 2の場合は、バッファーリストとバッファ名を結合できます.例えば、このマッピングで<Leader>b が表示されます.:buffer<space> コマンド.私のために残っているのは、バッファ番号またはバッファ名を入力することです.
    :nnoremap <Leader>b :buffers<CR>:buffer<Space>
    

    バッファーが開かれると、バッファリストに残ります.2つのバッファが開きます.file1.js and file1.js バッファ.まだ同じVimセッションでは、新しいファイルを開きたい場合は、できる:e file3.js . 我々がチェックするならば:ls , 3バッファがあることを確認します.

    あなたはタイプすることができます:bdelete バッファを閉じます.正直に言うと、Vimとの私の長年の編集では、ほとんどバッファを削除する必要はありませんでした.
    私が見る方法では、バッファはx - y - z座標のz軸のようです.X軸を右、Y軸、画面に向かってZ軸を想像してください.あなたのバッファファイルは、Z軸に並んでいます.Z軸1つのファイルを一度に横断することができます:bnext/:bprev . あなたはZ軸の任意の座標にジャンプすることができます:buffer <filename> . あなたが持っているファイルバッファの数は、あなたのZ軸がどれくらい長いかです.VimはほぼZ軸に沿ってどこにでも移動することができます.

    Vim Windows


    ウィンドウはバッファ上のビューポートである.vimでは、複数のウィンドウを開くことができます.
    コンソールからもう一度実行します.
    vim file1.js
    

    あなたがスクリーンを見ているものは、バッファを表示する1つの窓ですfile1.js . ウィンドウは、あなたがバッファを通して見ているものです.
    出口vim.コンソールで
    vim file1.js file2.js
    

    我々は、今何度もこれを見ました.今回は、2つのバッファとまだ1つのウィンドウがあります.
    Vimをまだやめないでください.実行:
    :split file2.js
    

    つの窓を見ている.一番下の窓のテキストを見るのは難しいですが、一番下の方は言いますfile1.js ( and top one )file2.js ). トップウィンドウはバッファ用のビューポートですfile2.js , 下のウィンドウはバッファ用のビューポートですfile1.js .
    このvimのセッションに残っている-まだ終了しないでください.実行:
    :vsplit file3.js
    

    あなたは今3つの窓を見ています.左上のウィンドウディスプレイfile3.js バッファ.右上ウィンドウディスプレイfile2.js バッファ.ボトムウインドウディスプレイfile1.js .
    VimバッファとWindowsの違いを見てください.しない場合は心配しないでください-あなたの時間を取る.私がこれを学んでいたとき、私はそれを理解するのにしばらくかかりました.
    つのバッファを表示する複数のウィンドウを持つことができます.たった今、私はまだ左上のウインドウの上にいますfile3.js バッファ.次のように入力します.
    :ls
    :buffer 2
    

    今すぐ両方の左上と右上のウィンドウが表示されてfile2.js バッファーウィンドウfile1.js バッファ).上の左に入力を開始すると、左上と右上のウィンドウの両方が私のタイプとして変更されていることがわかります.

    現在のウィンドウを閉じるには<Ctrl-W>+C . あるいは、あなたは:quit . ウィンドウを閉じると、バッファーがまだ開きます:ls ).
    ウィンドウの便利なショートカット
    <Ctrl-W>+v       # Opens a new vertical split
    <Ctrl-W>+s       # Opens a new horizontal split
    <Ctrl-W>+c       # Closes a window
    <Ctrl-W>+o       # Makes current window the only one on screen and closes other windows
    <Ctrl-W>+h/j/k/l # Moves the cursor to left/bottom/top/right
    
    有用なEXコマンド
    :vsplit <filename>     # Split window vertically
    :split <filename>      # Split window horiontally
    :new [filename]        # Create new window
    
    チェックアウト:h window .

    Vimタブ


    タブページは、Windowsのコレクションです.vimでは、タブにはほとんどのテキストエディタよりも意味があります.大部分のテキストエディタ(そして、現代のブラウザー)で、タブは通常開いたファイル/ページを意味します.我々がそれを閉じるとき、そのファイル/ページは去ります.
    Vimでは、タブはオープンファイルを表しません.Vimがファイルを開いたバッファに保存することを知りました.Vimでタブを閉じると、そのタブのファイルはまだバッファに格納されます.タブには、1つまたは複数のウィンドウを持つことができます.レイアウトやテンプレートのようなタブを考える.
    試してみましょう.コンソールで
    vim file1.js
    
    開きましょうfile2.js 新しいタブで
    :tabnew file2.js
    

    タブのナビゲーション
    :tabnew file.txt # open file.txt in a new tab
    :tabclose        # Close current tab
    :tabnext         # Go to next tab
    :tabprevious     # Go to previous tab
    :tablast         # Go to last tab
    :tabfirst        # Go to first tab
    
    また、実行することができますgt 通常のモードで次のタブページに移動します.
    複数のタブでVMを起動するには、以下のようにします.
    vim -p file1.js file2.js file3.js
    

    3 Dで考える


    Vimのウインドウの間で動くことは、デカルト座標でx - y軸に沿って旅行するようです.我々は二次元的に動いている.我々は、上、右、下に移動することができます<Ctrl-W>+h/j/k/l .
    以前はVimバッファはZ軸のようです.各ウィンドウの内側には、Zの軸に沿ってバッファのナビゲーションを移動することができます.ウィンドウ移動をバッファ横断と組み合わせると,3次元空間に移動する.

    各ウィンドウは、任意のバッファを見ることができます.

    このX - Y - Z運動は、Vimのウインドウとバッファ機能のおかげで可能です.

    バッファー、ウィンドウ、タブを効率的に使用する


    バッファー、ウィンドウ、タブを効率的に使用する方法を学習するには、どのように設計されているかを理解することです.
    現在のタスクを完了するために必要なすべてのファイルを開くためにバッファーを使用します.それは8または80バッファファイルかもしれません.多くのバッファーが開かれていると、空間分布は影響しません.VIMは、ファイルバッファを交換するように設計しました.バッファ間で飛ぶようにしてください.
    複数のバッファーを表示する必要がある場合は、Windowsを使用します.ファイル、参照コード、または次のコードフローを拡散するときと同様です.
    別のプロジェクトで作業するときにタブを使用します.サーバーコードの1つのタブとクライアントコードの1つのタブのように.
    ほとんどのコードエディタでは、ワークフローに2つの抽象化があります.Vimには3 :バッファ、ウィンドウ、タブがあります.私がVimフルタイムを使用し始めたとき、それは重要なパラダイムシフトを必要としました.私の個人的な提案は、彼らが最初に設計された方法を使用するあなたの時間を取ることです.あなたがそれを試みたあと、あなたがまだそれがあなたのためであると思わないならば、あなたに最も合うプロセスを使ってください.
    また、プラグインなどを見ることができますctrlp.vim or fzf.vim ワークフローを高めるために.
    最終的に、あなたのために働くことをしてください.特定の機能がXのために設計されていたので、誰もがXを行う必要はありません.
    これは止まるのによい場所です.お読みありがとうございます.ハッピーコーディング!

    資源

  • :h window

  • Vim close window without closing buffer
    Vim 101: Set Hidden
  • Seven habits of effective text editing
  • Buffers, windows, and tabs
  • Why do Vim experts prefer buffers over tabs?
  • Vim: Buffers, Tabs, Windows & Modes
  • Cheatsheet for Buffers, Windows and Tabs of Vim