web-dev-qa-db-ja.com

Vimで1つのファイルを複数のウィンドウに分割する

ファイルの一部をVimで個別の垂直分割ウィンドウとして開くことは可能ですか?

100行のファイルがあり、40行目から60行目までは、ファイルのその部分により焦点を合わせるために、メインウィンドウ内の個別のロックされたウィンドウとして分割された「タブ」としてレンダリングしたいとします。そこで行った変更は、メインウィンドウのファイル全体にも反映されます。

私は非常に長いファイルを持っているので、その内容をより適切に管理するためにそのようなものを実装したいと思います。

1
user373230

すでに指摘したように、同じバッファーを表示する分割を使用して、ほとんどの方法でそこに到達できます。

:vsplit

または

:split

ファイルの特定のセクションのみを表示する場合、それを行う1つの方法は、関心のない部分を折りたたむことです。ファイルの任意の部分を折りたたむ方法はいくつかあります。

最も簡単な方法は、ビジュアルモードで表示したくない行を選択し、zfマッピングを使用して折りたたむことです。

折り畳みにマークを使用することもできるので、見たいテキストのすぐ上にマークを置き、ファイルの先頭に移動してから、そのマークまで折りたたむと、次のようになります。

ma
gg
zf'a

折り畳みはウィンドウごと(分割)であるため、同じバッファーがそれぞれに表示されている場合でも、1つのウィンドウに折りたたまれても他のウィンドウには影響しません。

フォールドの作成で問題が発生した場合は、foldmethodをmanualに設定してみてください。

:set foldmethod=manual
3
Veen

これは実際には非常に簡単で、ありがたいことに構成は必要ありません。ファイルを開いたら、を実行します

:vsplit

またはキーボードショートカット

<C-w>v

同じことをします。これにより、同じバッファに別のウィンドウが作成されます。これを行うことの良い点は、1つの分割で行った変更が、他の分割に自動的に適用されることです。保存する必要もありません!

このように機能する理由は、バッファが1つだけで、同じバッファに複数のビューがあるためです。

あなたもすることができます

:split

または

<C-w>n

これは同じように機能しますが、水平分割があります。

この一般的なアプローチは、任意の数のバッファー、分割、およびタブに拡張できます。

2
James

注意深く読み、新しい分割で行った変更を元のファイルに反映させたいことを確認する前に、以下を投稿してください。これは私の答えをほとんど時代遅れにします。誰かに役立つ場合に備えて、これはここに残しておきます。


これからインスピレーションを得ました: http://vim.1045645.n5.nabble.com/How-to-read-specific-lines-from-a-file-into-current-buffer-td1180012.html

~/.vimrcを開いているとしましょう。

最初に分割して新しいファイルを開くことができます:vsp file

その後

:r! sed -n '22,25p;26q' ~/.vimrc

22行目から25行目をfileに配置します

これはスクリプト化してリファクタリングできると確信しています。時間があれば可能性を検討します。

1
Ilker Mutlu