ST2のCtrl+に最も近いもの(「厳密」ではなく「最も近い」)Pは、呼び出されるプラグインです。準備をしてください... CtrlP。Command-TやFuzzyFinderのような他の同様のプラグインがあります。
私はCtrlPを使用していますが、気に入っていますが、「プラグイン不要」にするというあなたの決定を心からサポートします。これは最も簡単な方法ではありませんが、長期的には見返りが得られます。
ファイルを開く
ファイルを開く最も基本的な方法は:e /path/to/filename
です。ありがたいことに、タブ補完とワイルドカードを使用できます。クラシック*
と特別な**
「」は「任意のサブディレクトリ」を表します。
これらすべてを組み合わせると、次のことができます。
:e **/*foo<Tab>
foo
作業ディレクトリの下の名前に含まれるすべてのファイルから選択するか、または:
:e **/*foo/*bar<Tab>
その名前にbar
含まfoo
れるすべてのサブディレクトリの下にあるすべてのファイルから、作業ディレクトリの下の任意の場所から選択します。
もちろん、これは:tabe[dit]
、:sp[lit]
および:vs[plit]
でも機能します。
ただし、これらのコマンドは1つのファイルに制限されています。:next
複数のファイルを開くために使用します。
:next **/*.js
を見てください:help arglist
。
バッファ間のジャンプ
:b[uffer]
基本的なバッファ切り替えコマンドです。
:b4 " switch to buffer number 4
:bn " switch to next buffer in the buffer list
:bp " switch to previous buffer in the buffer list
:bf " switch to first buffer in the buffer list
:bl " switch to last buffer in the buffer list
:b foo<Tab> " switch by buffer name with tab-completion
:b# " switch to the alternate file
これらのコマンドとその親族の多くはカウントを受け入れることに注意してください。
この:ls
コマンドは、ロードされたバッファーのリストを表示します。ただし、これは少し「特別」です。バッファを作成すると、バッファに番号が割り当てられるため、1 2 5
バッファを削除した場合のようなリストを作成できます。これは少し厄介なことです。そのため、その数でバッファに切り替えるのは少し面倒です。名前の一部、:b foo<Tab>
または循環による切り替えを優先し:bn :bp
ます。
とにかく、ここに読み込まれたすべてのバッファをリストし、プロンプトを表示して、バッファの数を入力してを押すのを待つクールなマッピングがあります<enter>
。
nnoremap gb :ls<CR>:b<Space>
このマッピングを使用すると、別のバッファへの切り替えは次のように簡単です。
gb
(quickly scanning the list)
3<CR>
または:
gb
(quickly scanning the list)
foo<tab><CR>
アイデアは、バイルイのVimインフォグラフィックのコレクションから取られたこの画像から来ています:
Vimには、現在のバッファと前のバッファの間をジャンプする<C-^>
(または<C-6>
一部のキーボードでは)通常モードと同等の機能もあります:b#
。2つのバッファを頻繁に切り替える場合に使用します。
バッファに関するすべてを読んでください:help buffers
。
宣言に行く
ファイル内では、gd
またはを使用できますgD
。
プロジェクト内では、Vimの「タグ」機能はあなたの友人ですが、ctagsやcscopeなどの外部コードインデクサーが必要になります。最も基本的なコマンドがある:tag foo
と<C-]>
、メソッド名にカーソルを持ちます。どちらのツールも同様のVimに統合されています:参照:help tags
、:help ctags
と:help cscope
。
それだけの価値があるので、私はタグナビゲーションを広範囲に使用してプロジェクト内を移動し(CtrlP :CtrlPTag
と:CtrlPBufTag
コマンドを使用しますが、ほとんどの場合、組み込みのコマンドも使用します)、私のお気に入りの「汎用」バッファー切り替え方法は名前です。
設定をデプロイする
Vimのユーザーの多くは、それが作るバージョン管理下に自分の設定を入れて非常に迅速かつ簡単に新しいマシンに独自の設定をインストールします。それについて考えてください。
編集する
数ヶ月前、私は古いVimがインストールされたリモートマシンで作業する必要がありました。適切なVimをインストールして自分の愛する設定を複製することもできましたが、今回は「のこぎりを研ぐ」ために軽く移動することにしました。私はすぐにミニマリスト.vimrc
を構築し、半分忘れられていたネイティブ機能のいくつかを再訪しました。そのギグの後、私はCtrlPはそれほど必要ではないと判断し、それを取り除きました。ネイティブ機能とカスタムマッピングはそれほどセクシーではありませんが、依存関係がなくても仕事をこなすことができます。
ファイルのジャグリング
set path=.,**
nnoremap <leader>f :find *
nnoremap <leader>s :sfind *
nnoremap <leader>v :vert sfind *
nnoremap <leader>t :tabfind *
:find
あなたがset path
正しくなるとすぐに本当に素晴らしいコマンドです。私の設定で,ffoo<Tab>
はfoo
、現在のディレクトリに含まれるすべてのファイルが再帰的に検索されます。迅速で直感的で軽量です。もちろん、私は:edit
や友人と同じ補完機能とワイルドカードを利用できます。
プロセスをさらに速くするために、次のマッピングにより、プロジェクトの一部全体をスキップして、現在のファイルのディレクトリの下で再帰的にファイルを見つけることができます。
nnoremap <leader>F :find <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>S :sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>V :vert sfind <C-R>=expand('%:h').'/*'<CR>
nnoremap <leader>T :tabfind <C-R>=expand('%:h').'/*'<CR>
警告!このpath
オプションは非常に強力です。上記の値-—は.,**
機能しますが、使用する言語には標準ライブラリがありません。適切な値はに完全に依存し、あなたのニーズ。
バッファとのジャグリング
set wildcharm=<C-z>
nnoremap <leader>b :buffer <C-z><S-Tab>
nnoremap <leader>B :sbuffer <C-z><S-Tab>
上記のマッピングでは、空のプロンプトで「ワイルドメニュー」に使用可能なバッファがリストされているため、メニューをナビゲートするか<Tab>
、数文字を入力<Tab>
してリストを絞り込むことができます。上記のファイルマッピングの場合と同様に、プロセスは迅速で、ほとんど摩擦がありません。
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
それらのマッピングはそれ自体が物語っています。
タグを使ったジャグリング
nnoremap <leader>j :tjump /
このマッピングでは、全文検索ではなく正規表現検索を使用し,jba<Tab>
ているため、タグを見つけることができますfoobarbaz()
。
はい、あいまい一致は中毒性がありますが、それがなくても生産性を高めることができます。そして、わずかな費用で。
もっと編集する
いくつかの追加のヒント/トリック…
ワイルドメニューオプション
で有効になっている「ワイルドメニュー」は、set wildmenu
ファイル/バッファのナビゲーションを容易にします。その動作は、調査する価値のある多くのオプションによって管理されています。
wildmode
「ワイルドメニュー」の動作をVimに指示します。
set wildmode=list:full
wildignore
すべての残骸を取り除きます:
set wildignore=*.swp,*.bak
set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
set wildignore+=tags
set wildignore+=*.tar.*
wildignorecase
を検索しfoo
て見つけることができますFoo
:
set wildignorecase
ファイルマーク
augroup VIMRC
autocmd!
autocmd BufLeave *.css normal! mC
autocmd BufLeave *.html normal! mH
autocmd BufLeave *.js normal! mJ
autocmd BufLeave *.php normal! mP
augroup END
私は最近、この宝石を他の誰かに見つけました~/.vimrc
。バッファを離れると、カーソルの正確な位置にファイルマークが作成されるため、どこにいても、'J
編集した最新のJavaScriptバッファにジャンプします。驚くばかり。