다중 화면으로 파일 내용 비교하기 


나에게 친구들의 이름과 국적을 기록한 파일이 있다. 그런데 친구들이 검증해보겠다고 하나씩 가져가더니 각자 이를 수정해서 가져왔다. 내가 가지고 있던 파일은 test1.txt 였는데 친구들이 파일을 수정했으므로 각자 test2.txttest3.txt로 파일을 수정했다. 이 파일에서 무엇이 수정된 것이지 눈이 빠지도록 확인해봐야 할 것 같다.

 

vim은 무척 재미있는 기능을 제공하고 있는데 그것은 파일간의 내용을 비교하는 기능이다.

 

이를 실행하려면 다음과 같이 vim으로 해당 파일들을 열 때 -d 옵션을 추가하면 된다


$ vim -d test1.txt test2.txt test3.txt


이와 같이 하면 아래와 같이 수직창에 비교할 파일이 나란히 비교되면서 나타난다.


 


위의 화면을 봐서 알겠지만 서로 같은 행의 문자열들만 비교하고 있다. 다른 문자열과 다른 점이 있는 문자열들은 모두 빨간색 음영으로 표시되어 있고 개행문자도 없이 공백인 행들은 연녹색 음영으로 처리되어 있다.

 

단순히 동일한 행끼리만 문자열을 비교해주는 기능이므로 별로 쓸만하지 않다고 생각할 수도 있지만 이 기능이 매력적인 것은 이 비교를 처음 한번만 해주는 것이 아니라 파일을 수정하거나 고치는 작업 중에도 계속 비교를 해주어 작업에 드는 품을 상당히 줄여주기 때문에 알아두면 요긴하게 써먹을 수 있다. 


사례를 들어보자. 위의 화면에서 3번째 행은 test2.txt 파일의 Jenny가 다른 두개의 파일에 있는 Jane과 다르기 때문에 빨간 음영으로 표시되어 있다. 이를 수정해서 다음과 같이 JennyJane으로 수정해보자. tset1.txt 파일과 test2.txt 파일의 빨간 음영이 사라지는 것을 확인할 수 있다. 이제 해당 행은 서로 다른 세개의 파일에서 동일하도록 완전히 수정된 것이다. 



Anki 파일


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


056 다중 화면으로 파일 내용 비교하기(2개 카드).apkg


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


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


명령 모드에서 <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를 열고 그 상태에서 다시 :vs test2.txt 명령으로 절반으로 수직분할하면서 test2.txt 파일을 오픈한 후 이 상태에서 다시 :sp test3.txt 명령으로 이 창을 절반으로 수평분할하면서 test3.txt 파일을 오픈한 모습이다. 




분할된 화면에서 창 사이 이동하기


<Ctrl-w>를 누르고 화살표키(←↑→↓)를 더하거나 <Ctrl-w>h, j, k, l 을 덧붙이면 커서 위치를 기준으로 그 방향에 있는 창으로 간단하게 이동할 수 있다


명령 모드에서 <Ctrl-w>+h 또는 <Ctrl-w>+


왼쪽 창으로 이동(현재 커서 위치의 왼쪽에 창이 있을 경우)


명령 모드에서 <Ctrl-w>+j 또는 <Ctrl-w>+


아래쪽 창으로 이동(현재 커서 위치의 아래쪽에 창이 있을 경우)


명령 모드에서 <Ctrl-w>+k 또는 <Ctrl-w>+


위쪽 창으로 이동(현재 커서 위치의 위쪽에 창이 있을 경우)


명령 모드에서 <Ctrl-w>+l 또는 <Ctrl-w>+


오른쪽 창으로 이동(현재 커서 위치의 오른쪽에 창이 있을 경우)



<Ctrl-w>를 누르고 화살표키(←↑→↓)를 더하거나 <Ctrl-w>에 h, j, k, l 를 붙여 화면간 이동은 아래 그림을 참조하라.




test1.txt 에서는 아래와 오른쪽 창이 없으므로 당연히 아래 창으로 이동(<Ctrl-w>+j 또는 <Ctrl-w>+)이나 오른쪽 창으로 이동(<Ctrl-w>+l 또는 <Ctrl-w>+)되지 않는다.

 

또한, test1.txt 에서 왼쪽 창으로 이동(<Ctrl-w>+h 또는 <Ctrl-w>+) 할 때 커서의 위치왼쪽의 수평 분할선을 기준으로 상단에 있으면 test3.txt로 이동하고 하단에 있으면 test2.txt로 이동하게 된다.


 

그 외에 다른 화면 이동은 다음과 같다


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


왼쪽 최상단에서 오른쪽 최하단까지 순차적으로 이동


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


바로 이전에 있었던 창으로 이동

두 개의 화면에서 계속 교대로 작업할 경우 <Ctrl-w>+p 키만 반복으로 누르면 편하게 이용할 수 있다


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


왼쪽 최상단 창으로 이동(최상위 창)


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


오른쪽 최하단 창으로 이동(최하위 창)


Anki 파일


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


052 복합 화면 분할 후 이동하기.apkg


유용한 화면분할


앞에서는 단순히 화면을 분할해서 여는 방법만 설명했지만 사실, 화면 분할은 원하는 도움말을 열거나, 원하는 파일을 열거나, 소스코드를 탐색하기 위해서 임시로 화면을 분할해서 파일을 열고 참조했다가 다시 닫는 등의 활동을 간단하게 할 수 있어 매우 유용하다.

 

이번 포스팅에서는 이러한 유용한 화면분할 기능인 화면을 수평 분할하면서 커서가 위치한 단어를 이름으로 하는 파일을 여는 <Ctrl-w>+f 키를 익혀본다.


 <Ctrl-w>+f 키 

 

<Ctrl-w>+f

: 현재 커서가 위치한 창의 상단에 새로운 수평창이 열리고 커서 위치의 단어이름으로 하는 파일정해진 경로(PATH)에서 찾아서 표시


가령, 커서가 test.txt 라는 문자열 위에 있을 때 <Ctrl-w>+f를 누르면 화면 상단에 test.txt 파일이 표시되는 수평창이 나타난다.

 

어떻게 사용하는지 구체적으로 살펴보자.

 

준비된 파일에서 printf 라는 문자열 위에 커서를 두고  <Ctrl-w>+f 키를 눌러보고, test.txt 라는 문자열에 커서를 두고  <Ctrl-w>+f 키를 눌러볼 계획이다.



printf 함수명 위에 커서를 놓고 <Ctrl-w>+f 키를 누른 결과


printf 라는 함수명 위에 커서를 두고  <Ctrl-w>+f 키를 누른 결과 path에서 "printf" 파일을 찾을 수 없다는 내용의 오류 표시가 화면 하단에 나타난다.

 



이를 통해 한 가지를 알 수 있는데 <Ctrl-w>+f 키를 눌러서 커서가 위치한 단어동일한 이름의 파일을 열 때, 어떤 정해진 경로(path)그 단어에 해당하는 파일이 있어야만 해당 파일이 열린다는 것이다.



test.txt 라는 문자열에 커서를 놓고 <Ctrl-w>+f 키를 누른 결과


앞의 사례가 있으므로 경로(PATH)에 해당하는 홈 디렉터리에 있는 test.txt 파일을 이용하여 실습한다. 
 

그리고 test.txt 라는 문자열 위에 커서를 놓고 <Ctrl-w>+f 키를 누른 결과 다음과 같이 수평 분할이 이루어지면서 위의 창에 test.txt 파일이 열리는 것을 확인할 수 있다.




Anki 파일


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


051 화면을 수평 분할하면서 커서가 위치한 단어를 이름으로 하는 파일을 열기(4개 카드).apkg


화면 분할하여 빈 파일 표시


앞서 포스팅한 화면의 수평분할수직분할은 기본적으로 현재 커서가 위치한 창에 표시된 파일을 그대로 화면에 표시했다


물론, 명령 라인에서 :sp [파일명] 또는, :vs [파일명] 형식으로 명령어를 입력하여 새롭게 분할되어 열리는 창에 표시할 파일을 선택할 수도 있지만 그런 복잡한 명령 없이 그냥 화면을 분할해서 이름 없는 빈 파일을 여는 명령어를 알아두면 간단하게 작업하기 수월할 것이다


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

명령 라인 :[#]new

현재 커서가 위치한 창이, #이 있으면 위의 #(row)을 가진 수평창과 그 나머지로 분할되고 #을 생략하면 절반으로 수평분할되면서 새로운 창에는 이름 없는 빈 파일이 표시된다.


명령 라인 :[#]vnew

현재 커서가 위치한 창이, #이 있으면 왼쪽의 #(column)을 가진 수직창과 그 나머지로 분할되고 #을 생략하면 절반으로 수직분할되면서 새로운 창에는 이름 없는 빈 파일이 표시된다.




다음은 vim의 화면 분할 후 새롭게 열리는 창에 빈 파일을 표시하는 몇가지 사례들이다. 


명령 라인 :vnew

현재 커서가 위치한 창이 절반으로 수직분할되면서 새로운 창에는 이름 없는 빈 파일이 표시

 

명령 라인 :25vnew

현재 커서가 위치한 창이 왼쪽의 25(column)을 가진 수직창과 그 나머지로 분할되면서 새로운 창에는 이름 없는 빈 파일이 표시

 

명령 라인 :30vnew

현재 커서가 위치한 창이 왼쪽의 30(column)을 가진 수직창과 그 나머지로 분할되면서 새로운 창에는 이름 없는 빈 파일이 표시

 

명령 라인 :15new

현재 커서가 위치한 창이 위의 15(row)을 가진 수평창과 그 나머지로 분할되면서 새로운 창에는 이름 없는 빈 파일이 표시

 

명령 라인 :new

현재 커서가 위치한 창이 절반으로 수평분할되면서 새로운 창에는 이름 없는 빈 파일이 표시


명령 모드 20<Ctrl-w>+n 

현재 커서가 위치한 창이 위의 20(row)을 가진 수평창과 그 나머지로 분할되면서 새로운 창에는 이름 없는 빈 파일이 표시

 

명령 모드 <Ctrl-w>+n

현재 커서가 위치한 창이 절반으로 수평분할되면서 새로운 창에는 이름 없는 빈 파일이 표시


Anki 파일


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


050 vim 화면 분할하여 빈 파일 표시.apkg


수직분할

 

앞에서 수평으로 분할했다면 이번에는 수직분할이다

 

명령 모드에서 <Ctrl-w>+v 또는 명령 라인에 :vs

현재 커서가 위치한 창이 절반으로 수직 분할되고 각각의 창에 현재 파일 표시

 

 

 

[#]<Ctrl-w>+v 또는 :[#]vs 형식으로 앞에 숫자(#)을 붙이면 위에 열리는 새로운 수직창의 열(column)를 미리 결정할 수 있다

 

또, :vs 명령으로 수직창으로 분할할 경우 [파일명]을 붙이면 새롭게 열리는 수직창에 표시되는 파일을 변경할 수 있다

 

 

다음은 vim 화면을 수직 분할하는 명령어 사례를이다. 

 

 

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

현재 커서가 위치한 창이 절반으로 수직 분할되면서 각각의 창에 현재 파일 표시

 

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

현재 커서가 위치한 창이 왼쪽의 10수직창과 나머지로 분할되면서 각각의 창에 현재 파일 표시

 

명령 라인:vs 

현재 커서가 위치한 창이 절반으로 수직 분할되면서 각각의 창에 현재 파일 표시

 

명령 라인:5vs

현재 커서가 위치한 창이 왼쪽의 5수직창과 나머지로 분할되면서 각각의 창에 현재 파일 표시

 

명령 라인:5vs test2.txt 

현재 커서가 위치한 창이 왼쪽의 5수직창과 나머지로 분할되면서 새롭게 나타나는 왼쪽의 창에는 test2.txt 파일이 표시

 

Anki 파일

 

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

 

 

 

 
 

049 vim 화면 분할하기 수직 분할.apkg
다운로드

 

화면 분할의 필요성


앞서, 여러 파일을 열고 이 파일들 사이를 이동하는 법을 알았지만 여러 개의 파일을 동시에 보면서 작업하는 것이 훨씬 더 효율적일 것이다. 당연히 vim에서도 여러 개의 파일을 동시에 보면서 작업을 할 수 있다.

 

다음부터 제시되는 키의 표시는 꺽쇠(<>) 안의 키는 동시에 누르고 이를 떼면서 +로 더해진 키이어서 누른다. , <Ctrl-w>+s 키는 [Ctrl]키와 w키는 동시에 누르고 이를 떼면서 s키를 누르면 된다



수평분할


명령 모드에서 <Ctrl-w>+s 또는 명령 라인에 :sp

→ 현재 커서의 창이 절반으로 수평 분할되면서 각각의 창에 현재 파일 표시됨





[#]<Ctrl-w>+s 또는 :[#]sp 형식으로 앞에 숫자(#)을 붙이면 위에 열리는 새로운 수평창의 행수를 미리 결정할 수 있다.

 

또, :sp 명령으로 수평창을 분할할 경우 [파일명]을 붙이면 새롭게 열리는 수평창에 표시되는 파일을 변경할 수 있다.


다음은 수평 분할 명령어의 다양한 사례를이다. 


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

현재 커서의 창이 절반으로 수평 분할되면서 각각의 창에 현재 파일 표시

 

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

현재 커서의 창이 위쪽의 10의 수평창과 나머지로 분할되면서 각각의 창에 현재 파일 표시

 

명령 라인에 :sp 

현재 커서의 창이 절반으로 수평 분할되면서 각각의 창에 현재 파일 표시

 

명령 라인에 :5sp 

현재 커서의 창이 위쪽의 5의 수평창과 나머지로 분할되면서 각각의 창에 현재 파일 표시

 

명령 라인에 :5sp test2.txt

현재 커서의 창이 위쪽의 5의 수평창과 나머지로 분할되면서 새롭게 나타나는 위의 창에는 test2.txt 파일이 표시

 

Anki 파일


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


048 vim 화면 분할하기 수평분할.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 파일입니다. 참고하시기 바랍니다. 



+ Recent posts