2

私は通常、Vim の画面を 2 つの垂直方向のウィンドウに分割し、それぞれをさらに水平方向に分割することができます。垂直ウィンドウを追加または削除したい場合があります。トップレベルの垂直分割がいくつあるかを検出し、必要に応じて vsplit を追加または削除する方法はありますか?

たとえば、画面が次のようになっているとします。

+--------+--------+
|        |        |
|        |        |
+--------+        |
|        |        |
|        |        |
|        +--------+
|        |        |
+--------+--------+

:Columns 1あげたい

+--------+
|        |
|        |
+--------+
|        |
|        |
|        |
|        |
+--------+

一番右の 2 つのウィンドウを閉じます。

:Columns 22 つの列が既に開いていることを検出して、何もしたくありません。

そして、私は:Columns 3私に与えたいです

+--------+--------+--------+
|        |        |        |
|        |        |        |
+--------+        |        |
|        |        |        |
|        |        |        |
|        +--------+        |
|        |        |        |
+--------+--------+--------+

関数が水平分割内の垂直分割を無視する場合は問題ありません。たとえば、私が持っていた場合

+--------+
|        |
|        |
+---+----+
|   |    |
|   |    |
|   |    |
|   |    |
+---+----+

そして私は走った:Columns 2、私は得るだろう

+--------+--------+
|        |        |
|        |        |
+---+----+        |
|   |    |        |
|   |    |        |
|   |    |        |
|   |    |        |
+---+----+--------+
4

1 に答える 1

0

確かに方法はありますが、関係があります。最初のステップは、現在開いている垂直ウィンドウをカウントすることですが、これを容易にする組み込み関数は知りません。私が見つけた実用的なアプローチは、基本的に最初のウィンドウ(最初のウィンドウの上部—最初の全体ではないにしても—垂直分割)から開始し、次に を使用wincmd lして右の次のウィンドウに移動することです新しいウィンドウに移動する限りwincmd l、最初のウィンドウを含む開いている垂直ウィンドウの数にそれぞれを追加します。(これは、質問に対するコメントで Gary Fixler が言及したものだと思います。)

ここに投稿するためのコードを書き始めましたが、自分の に入れたいどの関数よりも大きくなってしまったので、最終的に上記のアプローチを取り、コマンド~/.vimrcを提供するプラグインに変えました。Columcille (vim.org のhttp://www.vim.org/scripts/script.php?script_id=4742 ):Columnsを参照してください。プラグインは、同様に水平分割ウィンドウを管理するためのコマンドも提供します。ウィンドウ (開いている垂直分割がない場合) を指定された数の「行」に分割します。</p> :Rows

于 2013-10-04T21:38:36.833 に答える