[解決済み] Vim ファイルナビゲーション
質問
ここ数年 TextMate を使っていたので、vim を一生懸命に勉強しています。
私はファイル内のナビゲーションのいくつかを記憶し始めましたが、複数のファイル間のナビゲートで苦労しています。
私のワークフローでは、かなり定期的に一握りのファイル (分割ウィンドウが小さくなりすぎるほどのファイル) の間を飛び回ることがよくあります。
私は現在 NERDTree を使用していますが、ディレクトリへのドリルダウンは面倒であり、また常に
CTRL + W h / CTRL + W l で前後にホップします。
私は、簡単に切り替えられるタブがあればもっとうまくいくと思うのですが、たぶん別のワークフローを使う必要があるのでしょう。
また、次のようなショートカットが欲しいです。
CMD
+
T
をTextMateで実行します。見つけたのは
fuzzy_file_finder
を見つけましたが、これは vim が Ruby バインディングでビルドされている必要があり、私が作業したネイティブインストールではそうではありませんでした。
私が ができました。
を再構築することはできますが、私が vim に切り替えたい主な理由は、どのプラットフォームでも簡単に動作する 1 つのエディタ環境を持つことができるようにするためです。そこにあるオプションは圧倒的です、どんなアイデアでも大いに感謝されます!
どのように解決するのですか?
サブディレクトリへのドリルダウンは、古い形式の
:e
を使ったサブディレクトリへのドリルダウンは、タブ補完のための適切な設定があれば、それほど面倒だとは思いません。
を調べてみてください。
'wildmenu'
オプションを使用すると、Vim がコマンドラインの上にある modeline に補完リスト (ファイル名) を表示するようになります。 このオプションは
'wildmode'
オプションを変更することで、Vim が行うタブ補完の種類をさらに設定することができます。
個人的には
:set wildmode=full
.
私のワークフローはこんな感じです。
-
:cd
をプロジェクトのトップレベル・ディレクトリにコピーしてください。 -
ファイルを開くには
foo/bar/baz
:-
最も単純なシナリオ:タイプ
:e f<tab>b<tab>b<tab><enter>
. -
で始まるファイルが複数ある場合
b
で始まる複数のファイルがある場合、それらのディレクトリの一つで<left>
または<right>
または別の<tab>
をキーボードで入力すると、それらの間をジャンプします (または、さらに数文字を入力して曖昧さをなくします)。 -
最悪のシナリオは、名前を共有するファイルとディレクトリがあり、そのディレクトリにドリルダウンする必要がある場合です。 この場合、ディレクトリ名をタブで補完し、次のように入力します。
*<tab>
と入力して、ドリルダウンします。
-
- 2~3個のウィンドウを開き、必要に応じてすべてのウィンドウでファイルを開きます。
-
一度バッファでファイルを開いたら、バッファを削除しないでください。 新しいファイルを開くときは、バックグラウンドで開いたままにしておきます。 ただ
:e
を同じウィンドウで新しいファイルを開きます。 -
次に
:b <tab>
を使って、バックグラウンドで既に開いているバッファを循環させます。 もし:b foo<tab>
と入力すると、現在開いているファイルの中でfoo
.
また、新しいウィンドウを開いたり、ウィンドウ間をジャンプしたりするのは頻繁に行うことなので、これらのマッピングを使用して簡単にできるようにしました。
" Window movements; I do this often enough to warrant using up M-arrows on this"
nnoremap <M-Right> <C-W><Right>
nnoremap <M-Left> <C-W><Left>
nnoremap <M-Up> <C-W><Up>
nnoremap <M-Down> <C-W><Down>
" Open window below instead of above"
nnoremap <C-W>N :let sb=&sb<BAR>set sb<BAR>new<BAR>let &sb=sb<CR>
" Vertical equivalent of C-w-n and C-w-N"
nnoremap <C-w>v :vnew<CR>
nnoremap <C-w>V :let spr=&spr<BAR>set nospr<BAR>vnew<BAR>let &spr=spr<CR>
" I open new windows to warrant using up C-M-arrows on this"
nmap <C-M-Up> <C-w>n
nmap <C-M-Down> <C-w>N
nmap <C-M-Right> <C-w>v
nmap <C-M-Left> <C-w>V
Vim を開いて、いくつかのウィンドウをセットアップし、その中でいくつかのファイルを開くのに数秒かかります。 個人的には、サードパーティのファイル ブラウジング スクリプトのどれもが、あまり有用であると感じたことはありません。
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] vimにテキストをペーストする際の自動インデントをオフにする
-
[解決済み] Vimで行末に移動するにはどうしたらいいですか?
-
[解決済み] vimでシステムのクリップボードからペースト(とコピー)するには?
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フィッシュシェルでviモードを使うには?[クローズド]
-
[解決済み] Vimのマッピングコマンドであるremap, noremap, nnoremap, vnoremapの違いは何ですか?
-
[解決済み] vimのレジスタはどのように使うのですか?
-
[解決済み] Vimでクリップボードにコピーする方法は?
-
[解決済み] VIMで、本当に長い1行を複数の行に分割するにはどうすればよいですか?
-
[解決済み] vimでカレントファイルの表示名?
-
[解決済み] VIM ctrlp.vim プラグイン:ファイルを再スキャンする方法は?
-
[解決済み] VIM挿入モードでの文字の繰り返し
-
[解決済み] Vim:letとsetはどう違うの?
-
[解決済み] vimでファイルを開いた後、バックディレクトリのブラウズに移動する