Використовуючи команду vim split з командного рядка, щоб отримати 4 чверті розщеплення


20

Я хочу відкрити чотири файли vim у командному рядку:

vim file1 file2 file3

Але я хотів би, щоб кожен файл відкривався в окремому розділі:

vim -c "split file1" -c "split file2" -c "split file3" file4

(Згадане вище розділяє екран горизонтально 4 рази)

Ідеально, що я хотів би зробити, це розділити екран на 4 квадрата, як:

|-------|-------|
|       |       |
|       |       |
|-------|-------|
|       |       |
|       |       |
|-------|-------|

Я знаю, як це зробити, коли vim відкритий, але я не можу це зробити з командного рядка (використовуючи vs). Будь-які ідеї? Все, що я намагаюся, виглядає так (або з різною варіацією):

|-------|-------|
|       |       |
|-------|       |
|       |       |
|-------|       |
|       |       |
|       |       |
|-------|-------|

Відповіді:


22

Ви можете використовувати команду 'wincmd' для переміщення до різних вікон, як якщо б ви натискали CTRL + W.

vim file4 -c 'split file2' -c 'vsplit file1' -c 'wincmd j' -c 'vsplit file3'

Це впорядкує файли як:

file1   file2
file3   file4

Як це працює: відкриває файл4. Розділяється горизонтально, так що файл2 знаходиться над ним. Розбивається вертикально, так що файл1 знаходиться зліва, рухається до наступного вікна (file1) і вертикально розбивається знову.


7

Я написав сценарій, використовуючи цю інформацію, яка автоматично розбиває екран, як я хочу:

vimsp.py file1 file2 / file3

Призводить до

-----------
|f1  |f2  |
|    |    |
-----------
|file 3   |
|         |
-----------

Крім того, якщо розмістити / перед усіма файлами, вони замість них розділяються вертикально:

vimsp.py / file1 file2 file3

-------------
|file 1     |
-------------
|file 2     |
-------------
|file 3     |
-------------

https://gist.github.com/1376956


1

Суворо з командного рядка:

vim -o3 <list of 9 files> -c:{vsp,vsp,wincmd\ j,vsp,vsp,wincmd\ j,vsp,vsp} \
  -c "windo execute 'argument ' . winnr()"

... відкриє 9 файлів у сітці 3x3.

Ви також можете написати функцію та додати її до своєї .vimrc, щось подібне може спрацювати. Сподіваємось, досвідчений скрипт Vim міг би зважити, оскільки я знаю, що це неправильно:

function! mysplit(...)
  execute sp #1
  execute sp #1
  execute vsp
  execute vsp
  execute wincmd j
  execute vsp
  execute vsp
  execute wincmd j
  execute vsp
  execute vsp
  % I'm not at all experienced with writing vim scripts, so
  % the syntax on the following line is almost certainly not
  % correct; this is conceptual only.
  execute windo execute 'argument ' . winnr()
endfunction

... тоді використовуйте його з командного рядка:

vim <list of 9 files> -c ':execute mysplit()'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.