명령 줄에서 vim split 명령을 사용하여 4 분의 4 분할


20

명령 행에서 4 개의 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

작동 방식 : file4를 엽니 다. file2가 위에 있도록 수평으로 분할합니다. 세로로 분할되어 file1이 왼쪽으로 이동하고 다음 창 (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()"

... 3x3 그리드에서 9 개의 파일을 엽니 다.

함수를 작성하여에 추가 할 .vimrc수도 있습니다. 다음과 같이 작동 할 수 있습니다. 잘 된 경험이없는 vim 스크립터가 이것이 맞지 않기 때문에 무게를 could 수 있기를 바랍니다.

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()'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.