vim - Write a command to increase or decrease the number of vertical splits -
i have vim screen split 2 vertical windows, each of may further horizontally split. sometimes, want add or delete vertical window. there way detect how many top-level vertical splits there , add or remove vsplits necessary?
for example, suppose screen looks this:
+--------+--------+ | | | | | | +--------+ | | | | | | | | +--------+ | | | +--------+--------+
i want :columns 1
give me
+--------+ | | | | +--------+ | | | | | | | | +--------+
by closing 2 right-most windows.
i want :columns 2
nothing, detecting 2 columns open.
and want :columns 3
give me
+--------+--------+--------+ | | | | | | | | +--------+ | | | | | | | | | | | +--------+ | | | | | +--------+--------+--------+
i fine if function ignores vertical splits within horizontal splits. example, if had
+--------+ | | | | +---+----+ | | | | | | | | | | | | +---+----+
and ran :columns 2
, get
+--------+--------+ | | | | | | +---+----+ | | | | | | | | | | | | | | | | | +---+----+--------+
there indeed way, involved; first step count currently-open vertical windows, , don’t know of built-in function facilitates this. working approach found start @ first window (the top of first — if not entirety of first — vertical split), , then, using wincmd l
, move next window right long wincmd l
moves new window, adding each count of open vertical windows including first one. (i think gary fixler referred in comments on question.)
i started trying write code posting here, , grew become larger function want put in ~/.vimrc
, ended turning plugin takes above approach , provides :columns
command; see columcille (on vim.org @ http://www.vim.org/scripts/script.php?script_id=4742.) plugin provides command managing horizontal split windows: :rows
divides current column (or main window, if there no open vertical splits) specified number of “rows.”
Comments
Post a Comment