탭 끼워넣기


작업을 하다보면 들여쓰기 때문에 행의 맨앞에 탭을 삽입해야할 경우가 많이 생긴다. 물론, 그럴 때마다 일일이 행의 처음으로 이동해서 편집 모드로 들어가 탭을 집어넣고 다시 나와서 작업을 해야 한다면 무척 번거로울 것이다.


이런 경우를 위해서 vim에서는 행 앞에 탭을 쉽게 삽입하거나 제거할 수 있게 만들어 놓았다


명령 모드 >>(오른쪽 꺽쇠 2회 누름)

 

현재 커서가 위치한 행의 맨 앞에 탭 하나를 삽입한다.


명령 모드 <<(왼쪽 꺽쇠 2회 누름)

 

현재 커서가 위치한 행의 맨 앞에 있는 탭 하나를 제거한다


위에 소개된 명령은 여러 개의 행에 동시에 적용할 수 있다.

 

명령 모드 [#]>> 

 

현재 커서 위치를 1행으로 해서 아래로 #행까지 행의 맨 앞에 탭 하나를 삽입한다


명령 모드 [#]<< 

 

현재 커서 위치를 1행으로 해서 아래로 #행까지 행의 맨 앞에 탭 하나를 제거한다



들여쓰기 자동정렬


소스코드의 들여쓰기가 잘못되었거나 잘못되었을 경우 이를 제대로 정렬할 수 있는 손쉬운 방법이 있다.

 

비주얼 모드로 들여쓰기를 정렬할 영역을 지정한 후 등호(=) 를 누르면 들여쓰기가 깔끔하게 정렬된다.

 

, 별도로 블록을 지정하지 않고 그냥 소스코드 전체의 들여쓰기를 정렬하려면 명령 모드에서 gg=G라고입력하면 된다.

 


자동완성 기능 사용하기


어떤 변수나 함수를 타이핑할 때 너무 복잡한 이름이거나 잘 모르는 이름일 경우에는 자동 완성 기능을 사용하여 손쉽게 이를 해결할 수 있다.

 

편집 모드 <Ctrl-p>


커서 위치에서부터 위로 자동 완성이 가능한 단어가 있는지 찾아서 제시함


편집 모드 <Ctrl-n>


커서 위치에서부터 아래로 자동 완성이 가능한 단어가 있는지 찾아서 제시함


자동완성 기능을 사용하는 모습은 다음과 같다. 



Anki 파일


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



폴딩 기능 이용


폴딩 기능은 별로 구태여 볼 필요가 없는 부분을 접어서 보기 편하게 해 주는 기능으로 이렇게 사용한다.


접기(folding)

접고 싶은 부분을 비주얼 모드로 영역 지정한 후 zf 키를 누르면 해당 부분이 접어진다


펴기(unfolding)

접힌 부분에 커서를 위치시키고 zo 키를 눌러주면 접힌 부분이 펴진다


즉, 아래의 사진과 같이 지정된 영역을 접고 편다.




이를 응용해서 함수의 여는 중괄호 ‘{’ 위에 커서를 위치시키고 명령 모드에서 v]}zf 명령을 내리면 비주얼 모드로 진입하여(v) 함수의 코딩된 블록이 지정되어(]}) 접힌다(zf).


함수의 여는 중괄호 '{' 위에 커서를 위치시키고 v]}zf

비주얼 모드로 진입하여(v) 함수의 코딩이 이루어진 블록이 지정되어(]}) 접힌다(zf).




이 키가 다소 복잡하고 자주 사용하므로 아래와 같이 키 매핑을 해두는 것도 좋다. 


map <F1> v]}zf


※ 키 매핑은 앞서 포스팅한 이곳을 참조하면 된다



Anki 파일


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


064 폴딩 기능.apkg

vim에서 셸 명령 사용하기


vim으로 작업하다 보면 셸에서 어떤 명령을 실행해야 하는 경우가 종종 발생할 수 있다. 파일 리스트를 확인하거나 네트워크의 IP를 확인해야할 때도 있고 필요한 데이터를 만들거나 연산할 상황이 발생하는 등 다양한 상황이 발생하는 것이다


이런 경우 vim을 닫고 셸 명령을 실행하고 다시 vim을 실행하는 일련의 번거로움을 없애기 위하여 vim에서 바로 셸 명령을 실행하고 실행이 종료되면 vim으로 바로 복귀할 수 있게 하는 명령 형식이 있다.


, 아래와 같이 명령 라인에 느낌표를 앞에 붙이고 셸 명령을 입력하는 것이다.


명령 라인 :![셸 명령]


명령을 수행하기 위해 잠깐 vim을 빠져나왔다가 명령이 수행된 후 [Enter]를 눌러 다시 vim으로 돌아온다


가령, 다음과 같이 명령할 수 있다.


명령 라인 :!ls


vim을 빠져나가 현재 디렉터리의 파일 및 디렉터리의 리스트를 보여준다


실행 결과는 다음과 같다. 





셸에서 원하는 명령을 수행하고 다시 vim으로 돌아오려면 셸에서 [Enter] 키를 누르면 된다.



셸 명령의 결과로 화면에 출력되는 내용이 필요할 수 있다. 그 때는 다음과 같은 형식으로 명령한다.


명령 라인에 :r ![셸 명령]


셸 명령으로 수행된 결과 데이터를 현재 커서의 위치에 삽입 



명령 라인에 :r !ls


셸 명령 ls 의 결과로 나타난 파일 및 디렉터리 리스트를 현재 커서 위치에 삽입


참고로 명령라인 :r [파일명] 형식의 명령은 현재 커서의 위치에 해당 파일명의 파일에 기록된 내용을 삽입하기 위하여 사용한다. 그래서 test1.txt 파일을 수정하고 있는데, :r test2.txt 명령을 내리면 현재 커서의 위치에 test2.txt의 내용이 삽입된다



Anki 파일


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



매크로란 무엇인가?


앞에서 배운 레지스터 중에서 우리가 임의로 사용할 수 있는 임시 저장소로 알파벳 레지스터에 대해서 배운 바 있다.

 

이 알파벳 레지스터에는 보통 데이터가 들어가지만 일련의 키 입력을 저장할 수도 있다.

 

이 때, 일련의 키 입력레지스터에 저장하고 이것을 다시 실행할 수 있도록 만드는 것vim매크로라고 한다.



매크로 기록 및 사용


매크로를 기록하고 사용하는 과정은 다음과 같다. 


1) 매크로 기록 시작 

q와 키 입력을 저장할 알파벳 레지스터에 해당하는 알파벳을 누르면 이후에 이루어지는 키 입력이 해당 알파벳 레지스터에 기록되기 시작한다


2) 키 입력

매크로로 지정할 키를 실제로 사용하면서 입력한다.


3) 매크로 기록 완료

원하는 키 입력을 마친 후 q를 누르면 매크로 기록이 완료된다.


4) 매크로 사용

명령 모드에서 @알파벳 레지스터에 해당하는 알파벳을 같이 누르면 레지스터에 기록된 매크로를 실행한다.



매크로 기록 및 사용 사례


그럼 실제 사용해보면서 매크로를 익혀보자. 


반복적으로 사용되지만 키 입력이 귀찮은 경우에 해당하는 일련의 키 입력을 매크로로 지정하는 것이 바람직할 것이다. 


소스코드를 작업하다 보면 들여쓰기를 해야하는 경우가 많다. 그 때마다 일일이 행의 처음으로 돌아가서 편집모드로 들어간 후 [Tab] 키를 누른 후 다시 명령 모드로 돌아오는 과정이 조금 귀찮았던 것 같다. 이것을 매크로로 만들어 보자


1) 매크로 기록 시작


알파벳 레지스터 중 a매크로를 기록한다.


일단은 명령 모드에서 qa 를 눌러 매크로 기록을 시작한다


다음의 사진과 같이 하단에 '기록 중 @a라는 표시가 나타난다.




2) 키 입력


다음과 같이 기록할 키 입력을 수행한다.

우선 커서가 행의 공백이 아닌 첫 글자에 위치하도록 캐럿(^) 키를 누른다.

 

편집 모드로 진입하기 위하여 i키를 누른다.

 

이제 [Tab]키를 눌러 탭을 삽입하고 [Esc] 키를 눌러 명령 모드로 돌아온다.


3) 매크로 기록 완료


q를 눌러 매크로 기록을 마친다.



4) 매크로 사용


명령 모드에서 @a 를 눌러 a 레지스터에 기록된 매크로를 사용해본다.


이 때, 행의 앞에 탭을 3개를 한꺼번에 삽입하고 싶으면 명령 모드에서 3@a 를 누르면 된다. 그러면 @a 3번 반복하여 실행하므로 탭이 3개가 삽입되는 효과가 나타난다.



Anki 파일


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


062 매크로 사용.apkg


vim 단축키 만들기


vim에는 정말 다양한 기능과 굉장히 많은 명령어가 있다. 하지만 이 많은 기능과 명령어를 모두 사용할 줄 알아야 하는 것은 아니다. 오히려 이러한 다양한 명령과 기능들을 둘러보고 나서 자신에게 필요한 것만 최적화 하는 것이 바람직하다. 특히, 자주 쓰는 명령어나 기능들을 간단한 키로 실행할 수 있도록 만들어 놓으면 작업이 대단히 수월해질 것이다. 이 때 자주 쓰는 명령어나 기능들을 간단한 키로 만들어주는 것이 키 매핑(mapping)이다. , 사용자 지정 단축키인 셈이다.

 

우선 어떤 키 매핑들이 사용되고 있는지 확인해보자


명령 라인에 :map 사용 중인 키 매핑 리스트를 화면에 표시한다.


실행해 보면 굉장히 많은 키 매핑이 사용중인 것을 볼 수 있을 것이다. 이미 지정된 키 매핑을 사용하는 것은 나중 문제로 하고 일단, 우리가 원하는 키 매팽을 해보는게 좋을 것 같다. 


위에서 사용한 명령라인에 :map 명령어 뒤에 [단축한 키][단축될 명령어]를 다음과 같이 배치하면 [단축될 명령어][단축한 키]매핑(mapping) 시킨다.


명령 라인에 :map [단축한 키] [단축될 명령어]


[단축될 명령어][단축한 키]매핑(mapping)


가령, 다음과 같다.


명령 라인에 :map <F2> :tabnew<CR>


기능키인 <F2> 키에 :tabnew<CR>매핑(mapping) 

명령 모드에서 기능키 <F2>를 누르면 :tabnew 명령어가 실행되어 새로운 탭이 열리면서 이름 없는 빈 파일이 표시됨


※ <CR>vim 내에서 [Enter]키를 입력했음을 의미한다. 만일, 위의 사례에서 <CR>을 집어넣지 않은 채로 매핑을 하면 <F2>키를 눌렀을 때 명령 라인에 :tabnew 명령어가 나타나지만 [Enter]명령어가 입력되지 않으므로 아무 일도 일어나지 않는다.



.vimrc 에 설정한 키 매핑 기록하기


지금 열심히 키 매핑으로 원하는 단축키를 만들어놨어도 vim을 끄고 다시 켜면 처음부터 다시 설정을 해줘야 한다. 단축키는 앞으로도 지속적으로 사용할 것이므로 vim의 설정 파일인 .vimrc에 설정한 키 매핑을 기록하여 매번 vim을 실행할 때마다 다시 설정하지 않도록 조치할 필요가 있다. 


우리는 앞서 vim의 설정 파일인 .vimrc에 대해서 간단하게 둘러본 바가 있으니 이를 참조하기 바란다.


~/.vimrc 파일을 열어 다음 내용을 가장 마지막 행에 추가한다


map <F2> :tabnew<CR>

.vimrc에 기록할 때는 명령 라인에 명령어를 입력할 때 앞에 붙는 콜론(:)을 쓰지 않는 점에 주의


이제 vim을 닫고 다시 열어서 명령 라인에 :map 을 입력하여 사용중인 키 매핑 리스트를 확인하면 아래과 같이 등록된 것을 확인할 수 있다.



Anki 파일


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


061 단축키 만들기-키 매핑(mapping).apkg


Backquote(`)와 작은따옴표(')의 차이


앞서 배운 것처럼 backquote(`)와 마킹한 알파벳을 같이 누르면 마킹된 위치로 이동한다.


이때, backquote(`) 대신 작은따옴표(')와 마킹한 알파벳을 같이 누르면 마킹된 위치가 속한 행의 공백이 아닌 첫 글자로 이동한다


다음은 backquote(`)작은따옴표(')를 이용한 경우다. 


명령 모드 `a : 같은 파일 내에서 마킹된 위 a로 이동

명령 모드 'a : 같은 파일 내에서 마킹된 위치 a가 속한 행의 공백이 아닌 첫 글자로 이동

명령 모드 `A : 마킹된 A로 이동

명령 모드 'A : 마킹된 위치 A가 속한 행의 공백이 아닌 첫 글자로 이동


작은따옴표(')와 backquote(`)가 서로 비슷하면서도 조금씩 다른 역할을 하는 것을 알 수 있다.


 

마킹 관련 몇 가지 사용법


vim 커서가 이전에 있었던 위치를 자동으로 마킹해준다. 물론이것은 커서의 모든 위치를 일일이 지역 마킹한다는 뜻은 아니다이동 명령을 이용하여 커서의 위치가 급격하게 변화할 때 직전에 커서가 있던 위치를 자동으로 지역 마킹한다


가령, 탐색된 문자열을 n이나 N로 점프하는 경우 또는, 명령 모드에서 gg키로 문서의 처음으로 이동하거나 G키를 눌러 문서의 마지막으로 점프하는 경우 등 같은 경우에 자동으로 지역 마킹이 이루어진다.


이러한 자동 지역 마킹을 알아두면 작업을 하면서 주요 위치들 사이를 손쉽게 오가면서 작업을 할 수 있다. 


사용법은 아래과 같다. 


명령 모드에서 ``(Backquote 연속 두 번 누름)


같은 파일 내에서 현재 위치로 점프해오기 전 커서 위치로 이동


명령 모드에서 ''(작은따옴표 연속 두 번 누름)


같은 파일 내에서 현재 위치로 점프해오기 전 커서가 위치한 행의 공백이 아닌 첫 글자로 이동


이렇게 되면 backquote(`) 두개 또는 작은따옴표('두개를 연달아 연타하면서 간단하게 이전에 작업했던 곳으로 돌아갈 수 있게 된다. , 이것은 같은 파일 내에서만 사용할 수 있는 지역 마킹이다.



또, 열심히 작업하다가 잠시 끊고 쉬었다가 다시 작업을 할 때, 이전에 작업하던 부분에서 연속으로 작업하길 원할 수 있다. 이런 경우를 위하여 vim은 해당 파일이 어느 위치에서 작업을 끝냈는지 자동으로 지역 마킹을 해둔다


사용법은 다음과 같다. 


명령 모드에서 `"(Backquote큰따옴표)


전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동


명령 모드에서 '"(작은따옴표큰따옴표)


이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 공백이 아닌 첫 글자로 이동


마지막으로 마킹된 내용을 확인해보고 싶을 때는 명령 라인에 :marks 라고 명령어를 입력하면 된다.

 

그러면 아래와 같이 전역 마킹과 현재 파일에 지정된 지역 마킹 그리고 파일 마킹들이 전부 화면에 표시된다.




Anki 파일


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



원하는 위치를 마킹해서 이동하기


우리가 이동하고 싶은 위치를 마킹하고 해당 위치로 빠르게 이동하면서 작업을 하면 무척 효율적인 작업이 가능해질 것이다.

 

원하는 위치를 마킹하는 방법과 마킹한 위치로 이동하는 방법은 다음과 같다.

 

원하는 위치에 커서를 두고 명령 모드에서 m[임의의 알파벳]

 → 해당 위치를 알파벳으로 마킹


`[마킹한 알파벳] 해당 알파벳이 마킹된 위치이동


작은 따옴표(')와 비슷해 보이는 ` 이 표시는 backquote 또는 backtick 이라고 부른다작은 따옴표(')와는 다르므로 주의해야 한다. 키보드에서는 숫자키 1번 바로 왼쪽에 있는 키이다



마킹할 때 사용하는 알파벳은 대문자인지 소문자인지에 따라서 지역 마킹과 전역 마킹으로 그 성격이 다르다.


알파벳 소문자인 a~z로 마킹하면 지역 마킹이 된다.


지역 마킹이란 같은 파일 내부에서만 마킹한 위치로 이동할 수 있는 마킹이다. , test.txt에서 마킹을 했다면 test.txt 파일에서 작업을 할 때만 마킹한 위치로 이동할 수 있다.

 

알파벳 대문자인 A~Z로 마킹하면 전역 마킹이 된다.


전역 마킹이란 다른 파일에서도 전역 마킹으로 지정된 위치로 이동할 수 있는 마킹이다

서로 다른 파일들 사이에서도 얼마든지 이동이 가능하다는 것이다. 이게 어느 정도 수준이냐면, 전역 마킹으로 지정한 위치는 해당 파일을 별도로 열지 않아도 마킹한 곳으로 이동이 가능하다. 가령, test.txt 파일에 전역 마킹 A로 위치를 지정해 놓았을 때, test.txt 파일을 열지 않아도 다른 파일에서 명령 모드 `A 키를 누르면 test.txt 파일이 열리면서 해당 위치로 이동한다.

 


숫자 0~9로 마킹된 파일 마킹


파일 마킹은 우리가 직접 지정하는 것이 아니라 ~/.viminfo 파일에서 자동으로 지정하는 것으로 vim이 알아서 지정하는 것이다. 우리가 파일 마킹을 할 수는 없지만 명령모드에서 `1과 같이 입력하면 해당 파일로 이동할 수 있다. 

 

 

마킹한 위치와 마킹에 사용된 알파벳들은 파일을 닫아도 그대로 유지되므로 언제든지 재사용할 수 있다. 


이것이 재사용될 수 있는 이유는 해당 마킹에 대한 정보가 .viminfo 파일에 저장되기 때문이다.

 

아래는 .viminfo 파일에 저장된 마킹관련 정보들이다.



 

마킹으로 이동하기에 대한 간단한  사용례는 다음과 같다. 


명령 모드에서 ma 

 → 현재 파일의 현재 커서 위치를 지역 마킹 a지정


명령 모드에서 `a

 → 지역 마킹 a로 지정된 위치이동(, 현재 파일에 지정되어 있을 경우)


명령 모드에서 `4 

 → 파일 마킹 4번의 위치이동(파일이 열려있지 않더라도 해당 파일이 열리면서 화면이 이동한다.)


명령 모드에서 mB 

 → 현재 파일의 현재 커서 위치를 전역 마킹 B지정


명령 모드에서 `B 

 → 전역 마킹 B로 지정된 위치이동(파일이 열려있지 않더라도 해당 파일이 열리면서 화면이 이동한다.)


Anki 파일


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



탭 페이지 이동하기


앞의 포스팅에서 vim에서 탭 페이지를 열고 닫는 법을 알았다. 이제 탭 페이지에서 다른 탭 페이지로 이동하는 방법을 알아야 할 차례다. 


우선 가장 간단한 탭 페이지에서 다른 탭 페이지로 이동하는 방법은 마우스를 사용하여 이동하길 원하는 탭을 클릭하는 것이다. 그러면 해당 탭 페이지가 바로 열린다. 


, 탭을 클릭해서 드래그하면 탭의 표시 순서도 변경할 수 있다.




마우스 말고 명령어와 키를 이용하는 방법은 다음과 같다.


명령 라인 :[#]tabnext

명령 라인 :[#]tabn

명령 모드 [#]gt

명령 모드 [#]<Ctrl-PageDown>


가장 왼쪽에서부터 # 번째 탭으로 이동하고 #을 생략하면 현재 탭 다음(오른쪽) 으로 이동한다.






명령 라인 :[#]tabprevious

명령 라인 :[#]tabp

명령 모드 [#]gT

명령 모드 [#]<Ctrl-PageUp>


현재 탭을 기준으로 #번 왼쪽에 있는 탭으로 이동하고 #을 생략하면 바로 이전(왼쪽) 으로 이동한다


그리고 그 외는 다음과 같다. 


명령 라인 :tabmove

명령 라인 :tabm


가장 오른쪽 탭으로 이동


위의 명령어들을 간단히 적용한 사례는 다음과 같다


명령 라인 :tabnext → 현재 탭 다음(오른쪽으로 이동

명령 라인 :tabn → 현재 탭 다음(오른쪽으로 이동

명령 모드 gt → 현재 탭 다음(오른쪽으로 이동

명령 모드 <Ctrl-PageDown> → 현재 탭 다음(오른쪽으로 이동


명령 라인 :3tabnext → 가장 왼쪽에서 3번째 탭으로 이동

명령 라인 :3tabn → 가장 왼쪽에서 3번째 탭으로 이동

명령 모드 3gt → 가장 왼쪽에서 3번째 탭으로 이동

명령 모드 3<Ctrl-PageDown> → 가장 왼쪽에서 3번째 탭으로 이동


명령 라인 :tabprevious → 현재 탭 바로 이전(왼쪽으로 이동

명령 라인 :tabp → 현재 탭 바로 이전(왼쪽으로 이동

명령 모드 gT → 현재 탭 바로 이전(왼쪽으로 이동

명령 모드 <Ctrl-PageUp> → 현재 탭 바로 이전(왼쪽으로 이동

 

명령 라인 :2tabprevious → 현재 탭에서 왼쪽으로 2번째 탭으로 이동

명령 라인 :2tabp → 현재 탭에서 왼쪽으로 2번째 탭으로 이동

명령 모드 2gT → 현재 탭에서 왼쪽으로 2번째 탭으로 이동

명령 모드 2<Ctrl-PageUp> → 현재 탭에서 왼쪽으로 2번째 탭으로 이동



Anki 파일


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


058 탭 페이지 이동하기(33개 카드).apkg

여러 개의 파일을 탭으로 표시하기 


vim에서도 웹 브라우저들이나 다른 텍스트 에디터처럼 다른 페이지를 탭으로 표시해서 필요할 때마다 탭 페이지를 전환해가면서 작업을 할 수 있다.

 

아래의 화면은 첫 번째 test.txt 파일이 있고 그 다음 test1.txt 파일이 있는 모습이다.

 



탭 페이지 열기


탭을 여는 명령은 다음과 같다.

 

vim을 실행면서 바로 여러 개의 파일을 탭으로 열려면 다음과 같이 -p 옵션을 추가한다.

 

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


vim으로 작업하면서 다른 파일을 새 탭으로 열려먼 다음과 같이 한다


명령 라인에 :[#]tabedit 파일명

명령 라인에 :[#]tabe 파일명

# 번째 새 탭에 파일명의 파일을 #을 생략하면 현재 활성화된 탭 뒤의 새 탭에 파일명의 파일을 연다.


vim으로 작업하면서 이름 없는 빈 파일을 새 탭으로 열려면 다음과 같이 한다


명령 라인에 :[#]tabnew

# 번째 새 탭에 이름 없는 빈 파일연다. #을 생략하면 현재 활성화된 탭 뒤의 새 탭에 이름 없는 빈 파일연다.(명령어의 뒤에 파일명을 붙일 경우 해당 파일을 연다.)



탭 페이지 닫기


탭을 닫는 명령은 다음과 같다.


명령 라인에 :[#]tabclose

명령 라인에 :[#]tabc

# 번째 탭을 닫는다#을 생략하면 현재 활성화된 탭을 닫는다


또한, 탭이 표시된 줄의 가장 오른쪽에 있는 x 표시마우스로 클릭하면 현재 활성화된 탭을 닫을 수 있다.

 




Anki 파일


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



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


나에게 친구들의 이름과 국적을 기록한 파일이 있다. 그런데 친구들이 검증해보겠다고 하나씩 가져가더니 각자 이를 수정해서 가져왔다. 내가 가지고 있던 파일은 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


+ Recent posts