大きなディレクトリ構造でのvim編集/複数ファイル間の効​​率的な切り替え


11

私は決してvimパワーユーザーではありません。私はvimで高度なモーションとコマンドを把握し始めたばかりです。しかし、回避できないように見える欠点が1つあります。

私はコードを書くためのグラフィカルプログラムで育ちましたが、最近、多くのフォルダを含むかなり大きなプロジェクトで作業するために、sshとscreenでvimを使用し始めました。

複数のファイルをすばやく簡単に操作するためにvimマスターが何をするのか知りたいです。例としてRailsアプリを考えてみましょう。コントローラーを編集して実行したいとします。

vim app/controllers/controller.rb

しかし、すぐにビューの編集またはdbの移行に変更したい場合、最初の本能は:wq、bashに戻ってそのディレクトリに移動し、新しいバッファーでvimを再び開始することです。

これは明らかに間違いです。

私はいくつかのようなことを学びました:

  • クライアントサーバー(ただし、SSH経由でXを使用したくないので、これが唯一の方法のようです)
  • :eブラウジングで別のファイルを開くことはできますが、すぐには実行できないようです。タブコンプリートは本当に私をつまずきます。
  • ディレクトリ全体を開き、バッファを検索します。
  • NERDTreeは有望ですが、コマンドラインナビゲーションを習得するように強制するために、グラフィック表示から離れたいと思います。

世間知らずであることをお詫びしますが、主観がかなり大きくても、正しい対処方法を学びたいです。

あなたの方法は何ですか、そしてあなたは何を勧めますか?


特にRuby on Railsの場合、Tim Popeのrails.vimプラグインには、models / views / controllers / migrations / tests /…(ドキュメントを参照rails-type-navigationするか、インストールされている)。:help rails-type-navigation
Chris Johnsen

回答:


7

終了せずに複数のファイルを編集するようにvimを設定することができます。複数のバッファを使用して、それらを切り替えます。画面内でvimを使用しているため、以下を〜/ .vimrcに入れて有効にできます。

   set hidden
   syntax enable
   source $VIMRUNTIME/menu.vim
   set wildmenu
   set cpo-=<
   set wcm=<C-Z>
   map <F4> :emenu <C-Z>
   nmap <Esc>[5D :bp<CR>
   nmap <Esc>Od  :bp<CR>
   nmap <Esc>OD  :bp<CR>
   nmap <Esc>[5C :bn<CR>
   nmap <Esc>Oc  :bn<CR>
   nmap <Esc>OC  :bn<CR>
   nmap <Esc>[3~ :bd<CR>
   nmap ZZ :bd<CR>

これらのキーマッピングは、Ctrl-LeftおよびRight arrowキーにマッピングされ、バッファを切り替えます。F4キーは、GUIが表示するのと同じメニューを呼び出します。タブを押すと、タブを押したときに完了を選択するための小さなメニューも表示されるようになりました。


非常に良いヒントです。これらの3つの回答は、本当に快適に感じるのに役立ちました。プラグインなしの適切なバッファ管理は、優れたスキルです。ワイルドメニューが大好き!
2011年

5

ハァッ!私は以前あなたと全く同じだったので、あなたがどこから来たのかを正確に知っています。自分がやっていることをある程度知っている今でも(私はvimの神ではありませんが、そこに行きたいと思っています)、時々:wqを実行して、シェルに戻ります。

これをチェックしてください -これはあなたを助けるかもしれません。(これについて私が知らなかったので、それも私に役立ちます。それは、stackexchangeサイトのすばらしいところです-あなたは他の人の学習を助けることで学びます!)

これが私がするいくつかのことです。

  1. :eコマンド。vimの内部から、ファイルを編集するとき、次のようなことができます。:e dir/subdir/otherfile新しいバッファーでファイルを開きます。つまり、2つのファイルを一度に開くことができます。

  2. Ctrl-Shift-6(実際のASCII値がわからない)。2つのバッファを開いている場合は、このトグルを使用して、バッファをすばやく切り替えることができます。

  3. bd-バッファ削除。バッファをクリアできます。

  4. これは本当に便利なもの:shです。何らかの理由で(たとえば、ディレクトリを調べてファイルをchmodするために)シェルに戻る必要がある場合は、vimのシェルコマンドを呼び出すだけで実行できます。シェルを終了すると、vimにいた場所に戻ります。

  5. 上記と同じカテゴリで-入力する:!と、UNIXコマンドを入力すると、そのコマンドが実行されます。でこれを試してくださいls。(シェルのビルトインでも機能すると思いますが、よくわかりません。)

それらは私がいつも使っているものです。vimで一度に2つ以上のバッファーを開くことができるため:n、次の:pファイルと前のファイルにもあります(ただし、通常はこれを行いません)。


これらのヒントをありがとうございます。私もこれを見つけました:wincent.com/products/command-t。私はそれを使い始めるのにうんざりしています。唯一の欠点は、ルビーが必要なことです(sshにそれほど友好的ではありません)が、それはまさに私が探していたものです。:sh:e
それと

ほとんどのシェル(つまり、ジョブ制御を備えたシェル)ではCtrl+Z、プロセスを(fgシェルから再び表示するために)中断する必要があります:sh。これはの代わりです。
maxschlepzig

別の素晴らしいヒント!優秀な!私はこれらをブログの投稿などでコンパイルする必要があります。
2011年


2

分割ウィンドウを使用して複数のファイルを一度に表示することもお勧めします。VIM内のバッファーとウィンドウの管理に関するスキルを追加すると、すぐにVIM忍者になります。

実際のドキュメントについては、VIM Windowsドキュメントを参照しますが、ここから先に進んでいきます。

2つ(またはそれ以上)の水平に分割されたウィンドウでVIMを起動します。一番上のウィンドウにはfile1、次のウィンドウにはfile2などがあります。

vim -o <file1> <file2> (file3 file4 ...)

2つ(またはそれ以上)の垂直分割ウィンドウでVIMを起動します。左端のウィンドウにはfile1、次のウィンドウにはfile2などがあります。

vim -O <file1> <file2> (file3 file4 ...)

カーソルを別のウィンドウに移動します。

CTRL-W <vim direction key> (h=left, j=up, k=down, l=right)

すでに1つのファイルを編集しているが、ウィンドウを分割して別のファイルも編集する場合:

:split <file2>
:vsplit <file2>

水平分割と垂直分割のそれぞれ。

ウィンドウの移動、サイズ変更などのコマンドもあります。


1

vi:splitコマンドを使用して、2番目の編集ウィンドウを開きます。splitは、水平分割と垂直分割の両方を実行でき、一度に3つ以上を分割できます。同じviセッションで10個ものファイルを開いていました。

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