다중 화면에서 창 크기 조절하기


이번에는 다중 화면에서 창의 크기를 조절하는 법을 알아보자.


명령 모드에서 <Ctrl-w>+= 다중 화면의 창의 크기를 균등하게 조절

명령 모드에서 <Ctrl-w>+_ (언더바) 수평분할선을 움직여 현재 커서가 위치한 창의 크기최대화

명령 모드에서 <Ctrl-w>+|(버티컬 바) 수직분할선을 움직여 현재 커서가 위치한 창의 크기최대화


다음은 test1.txt 창에 커서가 있고 이 상태에서 <Ctrl-w>+_ 키로 수평분할선을 화면 최하단으로 이동시켜 test1.txt 창을 최대화하고 다시 <Ctrl-w>+= 키를 눌러 다시 균등분할 상태인 원래의 화면으로 돌아오는 모습이다.

 



다음은 test1.txt 창에 커서가 있고 이 상태에서 <Ctrl-w>+| 키로 수직분할선을 오른쪽 끝으로 이동시켜 test1.txt 창을 최대화하고 다시 <Ctrl-w>+= 키를 눌러 다시 균등분할 상태인 원래의 화면으로 돌아오는 모습이다.


 

명령 모드에서 <Ctrl-w>+[#]

현재 커서가 위치한 창의 수평분할선창의 크기가 커지는 방향으로 #만큼 움직이고 #을 생략하면 1만 움직임


명령 모드에서 <Ctrl-w>+[#]- 

현재 커서가 위치한 창의 수평분할선창의 크기가 작아지는 방향으로 #만큼 움직이고 #을 생략하면 1만 움직임


다음은 test1.txt 창에 커서가 있고 이 상태에서 <Ctrl-w>+6+ 키로 수평분할선을 아래쪽으로 6행 움직여 test1.txt 창의 크기를 6행 늘리고 다시 <Ctrl-w>+6- 키를 눌러 수평분할선을 위쪽으로 6행 움직여test1.txt 창의 크기를 6행 줄이는 모습이다. 




명령 모드에서 <Ctrl-w>+[#]> 

현재 커서가 위치한 창의 수직분할선창의 크기가 커지는 방향으로 #칸만큼 움직이고 #을 생략하면 1만 움직임


명령 모드에서 <Ctrl-w>+[#]< 

현재 커서가 위치한 창의 수직분할선창의 크기가 작아지는 방향으로 #칸만큼 움직이고 #을 생략하면 1만 움직임


다음은 test1.txt 창에 커서가 있고 이 상태에서 <Ctrl-w>+10> 키로 수직분할선을 오른쪽으로 10칸 움직여 test1.txt 창의 크기를 10칸 늘리고 다시 <Ctrl-w>+10< 키를 눌러 수직분할선을 왼쪽으로 10칸 움직여 test1.txt 창의 크기를 10칸 줄이는 모습이다. 




Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



다중 분할 화면에서 창들간의 위치 전환하기


이제 화면을 다중으로 분할하고 분할된 화면에서 들 사이를 이동하고 을 열고 닫고 파일을 열고 닫을 수 있게 되었다.

 

그런데 때로는 화면 배치가 원하는 대로 이루어지지 않아 화면의 배치를 바꿔보고 싶을 수 있다.


이런 경우 사용할 수 있는 몇가지 방법을 확인해보자. 



다중 분할된 화면에서 창들간의 위치를 순차적으로 전환하기 


다중 분할된 화면에서 들을 순차적으로 전환하는 키는 다음과 같다.


명령모드에서 <Ctrl-w>+r 순차적으로 들간의 위치 전환


키를 배웠으니 제대로 작동하는지 한 번 실험해 보자. 


아래는 위에서부터 차례대로 test3.txt 파일이 표시된 3행의 수평창, test2.txt 파일이 표시된 4행의 수평창, test1.txt 파일이 표시된 13행의 수평창이 순서대로 표시되어 있는 화면에서 <Ctrl-w>+r 키를 눌러서 화면을 순차적으로 전환하고 있는 모습니다.



<Ctrl-w>+r 키로 화면의 배치를 전환하면 test3.txt 수평창이 가운데로 오고, 이 상태에서 다시 <Ctrl-w>+r 키를 누르면 test3.txt 수평창 가장 밑바닥으로 전환되는 것을 확인할 수 있다. 동일한 방식으로 test1.txt test2.txt 파일이 표시된 수평창도 전환되고 있다.


수평으로 분할된 화면에서 잘 작동하는 것을 확인했으니 이번에는 수직으로 분할된 화면에서 잘 작동하는지 확인해보자.


아래는 왼쪽의 화면에서부터 차례대로 test3.txt 파일이 표시된 20열의 수직창, test2.txt 파일이 표시된 30열의 수직창, test1.txt 파일이 표시된 50열의 수직창이 순서대로 표시되어 있는 화면에서 <Ctrl-w>+r 키를 눌러서 화면을 순차적으로 전환하고 있는 모습니다.





<Ctrl-w>+r 키로 화면을 순차적으로 전환하면 test3.txt 수직창이 가운데로 오고, 이 상태에서 다시 <<Ctrl-w>+r 키를 누르면 test3.txt 수직창이 가장 오른쪽으로 전환된다. 동일한 방식으로 test1.txttest2.txt 수직창도 같이 전환되고 있다.


<Ctrl-w>+r 키로 화면의 배치를 전환하면 수평분할된 들 사이의 배치가 바뀌고, 수직분할된 들 사이의 배치가 바뀐다. 그렇다면 화면을 수직과 수평으로 한번씩 분할해서 4등분한 화면에서 <Ctrl-w>+r 키로 화면의 배치를 바꾸면 어떻게 될까?




test2.txt 에 커서가 있고 이 상태에서 <Ctrl-w>+r 키를 누르면 test2.txt  test1.txt 이 상호 전환된다. <Ctrl-w>+r 키를 누르면 이번에도 test2.txt test1.txt 이 상호 전환된다. , test1.txt test2.txt만 상호 위치가 바뀌는 것을 확인할 수 있다. 이는 커서를 test1.txt에 두든 test2.txt 에 두든 상관없이 항상 이 두 파일이 표시된 만 서로 바뀐다


그렇다면 커서를 화면 하단의 2개의 화면인 test3.txt test.txt 에 두면 어떻게 될까?  이번에는 test3.txt test.txt  상호간에만 화면 전환이 일어난다.

 

결국<Ctrl-w>+r 키는 을 순차적으로 전환한다고 설명되어 있지만 수직분할된 수직창들 사이에서만 혹은, 수평 분할된 수평창들 사이에서만 전환이 순차적으로 이루어진다는 사실을 알 수 있다.



커서가 이전에 있었던 창과 현재 있는 창간 위치 전환하기


그 다음은 커서가 이전에 있었던 과 현재 있는 과 위치를 서로 바꾸는 명령이다.


명령모드에서 <Ctrl-w>+x → 커서가 이전에 있었던 현재 있는 의 위치를 상호 전환


<Ctrl-w>+x 키도 위 의 <Ctrl-w>+r 키와 크게 다르지 않다. , 수평으로만 분할된 화면이나 수직으로 분할된 화면에서만 서로 작동한다


그 외에 한가지 다른 점이 더 있는데 그것은 바로 인접한 창하고만 서로 위치 전환이 일어난다는 것이다. 


가령, 다음의 화면을 보자. 



위의 화면에서 test1.txttest2.txt 만 <Ctrl-w>+x 키로 상호 위치 전환이 가능하다. 마찬가지로 서로 인접해 있는 test2.txt test3.txt<Ctrl-w>+x 키로 서로 위치전환이 가능하다.

 

즉, <Ctrl-w>+x 키가 바로 직전에 있었던 화면과 현재 있는 화면의 위치를 상호 전환시켜 준다고 하지만 수직분할된 화면의 수직창들 사이에서만 혹은, 수평 분할된 수평창들 사이에서만 그것도 서로 인접한 창들끼리만 상호 위치전환이 이루어지는 것이다.

 


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



여러 개의 파일을 분할된 화면에서 열기


여러 개의 파일을 열 때 분할된 화면에 열고 싶다면 파일을 열면서 vim을 실행할 때, 다음과 같이 -o 옵션을 추가하면 된다


vim -o test1.txt test2.txt test3.txt


그러면 아래와 같이 균등하게 수평분할된 화면test1.txt, test2.txt, test3.txt 가 열린다.




명령 라인에 :ls, :buffers, :files 명령으로  3개의 파일 버퍼에 3개의 파일이 동시에 열린 것을 확인할 수 있다.


:ls 또는 :buffers 또는 :files

1 %a "test1.txt"

a "test2.txt"

a "test3.txt"


열린 세 개의 파일들이 모두 화면에 표시되어 있으므로 모두 a 표식이 붙어있다. , 현재 커서는 1번 버퍼의 test1.txt 파일에 있으므로 해당 파일에는 퍼센트(%)도 같이 붙어있다.



다중 화면에서 여러 개의 파일 다루기


이제 분할된 화면을 닫아보자


현재 커서가 위치한 창을 닫는 키는 다음과 같다.

명령 모드에서 <Ctrl-w>+q

명령 모드에서 <Ctrl-w>+c

명령 라인에 :quit 또는 :q

명령 라인에 :close 또는 :clo


현재 커서가 위치한 창을 제외한 다른 모든 창을 닫는 키는 다음과 같다

명령 모드에서 <Ctrl-w>+o

명령 라인에 :only 또는 :on


이제 test1.txt 외의 모든 창을 닫아보았다. 이 상태에서 파일 버퍼를 확인한 결과는 다음과 같다.


 


화면을 닫았을 뿐 파일을 닫은 것은 아니므로 파일들이 모두 파일 버퍼에 그대로 남아있다. 다만, 이제 화면에 표시된 파일과 현재 커서가 위치한 파일이 전부 test1.txt 뿐이므로 파일 버퍼 1번에 있는 파일에만 %a가 표시되었다


현재의 상태에서 이번에는 파일 버퍼에 있는 파일들을 분할된 화면에 표시해보자. 


명령 라인에 :sb[#] → 현재 커서가 위치한 창을 수평으로 분할하고 새로운 수평창에 # 버퍼를 표시하고만일 #을 생략할 경우 현재 파일이 그대로 표시(=:sp)됨


파일 버퍼 2에 있는 test2.txt 파일을 수평창에 열기 위해서 명령 라인에 :sb2 명령어를 입력하면 그 결과가 다음과 같다.





파일 버퍼를 하나씩 표시하는 것이 번거로우니 모든 버퍼의 파일을 표시하려면 다음과 같이 한다.


명령 라인에 :al 현재 파일 버퍼에 있는 모든 파일수평으로 분할된 화면에 표시


※ 이제까지와 달리 현재 커서가 위치한 화면을 기준으로 화면 분할이 이루어지지 않고 모든 파일이 수평으로 균등하게 분할된 화면에 표시

 



모든 파일이 수평으로 분할된 화면에 균등하게 표시되어 있는 현재의 상황에서 파일 버퍼를 닫아보자.


명령 라인에 :bd[#] # 버퍼닫는다(#이 없으면 현재의 버퍼닫는다)

 

명령 라인에 :bd1 명령을 입력하면 파일버퍼 1번의 파일인 test1.txt 파일을 표시하는 창이 닫히고 동시에 파일 버퍼도 닫힌 것을 아래와 같이 확인할 수 있다.



 


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


053 다중 화면과 파일 버퍼.apkg

파일 사이에서 이동


바로 앞의 포스팅에서 여러 개의 파일을 동시에 열고 해당 파일이 들어있는 파일 버퍼를 확인하는 방법을 배웠다. 그렇다면 이제 여러 파일들 사이를 오가면서 작업을 하기 위하여 파일들 사이를 오가는 방법을 알아야 한다


우선, 다음과 같이 명령하여 test1.txt, test2.txt, test3.txt 3개 파일을 다시 열어보자


$ vim test1.txt test2.txt test3.txt


명령 실행으로 처음 화면에 표시되는 파일은 첫 번째 파일인 test1.txt 이다. 이제 다음 명령어를 입력하여 파일 버퍼와 파일리스트를 확인해보자. 


:buffers 또는 :ls 또는 :files

1  %a  "test1.txt 2

2      "test2.txt"  0

3      "test3.txt"  0


현재, 화면이 표시되고 있는 첫 번째 파일1번 버퍼이고 현재 화면에서 표시되어 있다는 뜻에서 %a 파일 버퍼 번호 옆에 표시되어 있다.


이제, 간단하게 파일들 사이를 이동하는 방법을 알아보자명령 라인에 다음과 같이 명령어를 입력하면 된다 


:[#]n 다음 파일# 이동함(#이 없을 때는 1)

:[#]N 이전 파일# 이동함(#이 없을 때는 1)


파일을 이동하는 :[#]n :[#]N 명령으로는 가장 작은 파일 버퍼 번호 이전으로는 이동할 수 없고, 가장 큰 파일 버퍼 번호 이후로도 이동할 수 없다.

 

이번에는 명령 라인에 :n을 입력하여 다음 파일로 넘어가 다시 파일 버퍼와 파일 리스트를 다시 확인해보자.

 

:buffers 또는 :ls 또는 :files

1 #  "test1.txt 2

2 %a "test2.txt"  1

3    "test3.txt"  0


첫 번째 파일에서 다음 파일로 넘어온 것이므로 두 번째 파일이 현재 화면에 표시된 파일이고 따라서 2번 옆에 %a 표시가 있다. 그리고 파일 버퍼 번호 1 옆에는 # 표시가 새로 생겨난 것을 알 수 있다. # 표시는 파일 버퍼 번호 1의 파일이 바로 직전에 열렸던 파일이라는 뜻이다.

 

파일 버퍼 번호 2에 위치한 현재 상황에서 다시 이전 파일로 넘어가는 방법은 다음과 같다. 


:e # 이전 파일연다.

명령 모드 <Ctrl-^> 이전 파일을 연다


아무래도 <Ctrl-^> 키를 사용하는 것이 편하다. 특히, 딱 두 개의 파일을 이용하여 작업을 할 경우에는 <Ctrl-^> 키만 누르면 바로바로 파일을 스위치하면서 사용할 수 있어 매우 편하다



파일 버퍼 사이에서 이동


현재 화면에 표시되는 파일 버퍼를 이동하여 원하는 파일로 이동할 수 있다.

 

파일 버퍼를 이동하는 방법은 다음과 같이 명령 라인에 명령어를 입력하는 것이다.

 

:b# 파일 버퍼 번호 #에 해당하는 버퍼로 이동한다.

:bp[#] 이전 버퍼로 이동, #을 붙이면 #번만큼 이전 버퍼로 이동

:bn[#] 이후 버퍼로 이동#을 붙이면 #번만큼 이후 버퍼로 이동

:bf 첫 번째 버퍼로 이동

:bl 마지막 버퍼로 이동


버퍼를 이동하는 :bp[#] :bn[#] 명령은 첫 번째 버퍼와 마지막 버퍼에서 다시 순환하므로 :n이나 :N 명령이 오류가 나는 것과는 달리 명령이 계속 적용된다.



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



vim에서 여러 개의 파일 열고 파일 버퍼 확인하기


프로그래밍 소스 코드는 보통 여러 개의 파일로 이루어져 있다. 따라서 동시에 여러 개의 파일을 열고 작업해야 하는 경우가 비일비재하다. 따라서 vim에서도 여러 개의 소스 코드 파일을 다룰 수 있는 방법들이 준비되어 있다.

 

우선, vim에서 여러 개의 파일을 여는 방법부터 알아볼 필요가 있다. 하나는 다음과 같이 명령라인에서 순차적으로 파일을 하나씩 여는 것이다


:e test1.txt test1.txt 파일이 열린다.

:e test2.txt test2.txt 파일이 열린다.

:e test3.txt test3.txt 파일이 열린다.

※ 명령 라인에 :e [파일명] 형식으로 파일을 불러올 경우 파일이 있으면 해당 파일을 불러오고 해당 파일이 없으면 새로운 파일이 임시로 만들어진다.


두 번째 방법은 vim을 실행하면서 한꺼번에 여는 것이다


$ vim test1.txt test2.txt test3.txt


여러 개의 파일을 열었지만 현재 화면에 보이는 파일은 하나밖에 없을 것이다이러니 여러 개의 파일을 열었다고는 하지만 전혀 실감이 나지 않는다. 여러 개의 파일이 열렸다는 것을 어떻게 확인할 수 있을까?

 

vim은 열린 파일들을 파일 버퍼에 임시로 저장하여 사용한다. 따라서 다른 파일들이 파일 버퍼에 들어있는지를 확인하면 여러 개의 파일이 열려있는 것이다. 이를 확인하려면 명령 라인에 :buffers 또는 :ls 또는 :files 라고 명령어를 입력하여 파일 버퍼(buffer)를 확인하면 다음과 같이 결과가 출력된다


:buffers 또는 :ls 또는 :files

1 %a + "test.1.txt"  1

2      "test.2.txt"  0

3      "test.3.txt"  0


순서대로 1번 버퍼test1.txt 파일이 있고 2번 버퍼test2.txt3번 버퍼test3.txt 파일이 들어있는 것이 확인된다.


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



+ Recent posts