본문 바로가기

os/linux

[ Linux ] vi 편집기 사용법 (vimdiff 파일 비교)

[ Linux ] vi 편집기 사용법 (vimdiff 파일 비교)

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 vi 편집기에서 두 파일을 비교하는 방법에 대해서 알아보려합니다.

 

두 파일을 비교하는 기능을 diff 라고 불리기도하는데요.

 

vi 편집기에서 diff 를 사용해 보도록 하겠습니다.

 

자 천천히 따라오세요.

 

vi
vi 실행화면


내용이 다른 2개의 파일 생성

 

# 리다이렉션을 이용해 파일 생성
echo 'test file symxsym' > test1.txt
echo 'symxsym,tistory.com' >> test1.txt
echo 'test fil symsym' > test2.txt
echo 'symxsym,tistory.com' >> test2.txt

 

리다이렉션이 무엇인지 모르시거나 이해가 안될때는 아래 글을 참고하시기바랍니다.

 

[ Linux ] 리눅스 명령어 (중급) - 리다이렉션, 파이프, tee

 

두 파일의 내용이 다른것을 확인합니다.

 

cat
내용 다름 확인


vim 패키지 설치

 

vimdiff기능은 vim 패키지에 포함 되어있는 기능이기 때문에 설치가 필요합니다.

 

친절하게도 우분투가 설치 명령어까지 직접 알려줍니다.

 

vimdiff
vim 패키지 설치 필요

 

설치 명령어를 입력했는데 패키지를 찾지 못하고 에러가 발생한다면

 

sudo apt-get update 를 진행하고 설치를 시도해보세요.

 

sudo apt-get install vim -y # vim 패키지를 설치하는 명령어입니다. 옵션 -y 설치 동의을 의미

vimdiff 파일 비교

 

앞서 만든 test1.txt 와 test2.txt 를 비교해봅시다.

 

vimdiff test1.txt test2.txt
또는
vim -d test1.txt test2.txt

 

vimdiff
내용이 다른 두 파일 비교

 

내용이 다른 부분을 배경색을 통해 표시해줍니다.

 

하지만 보통 편집을 하는 도중에 파일 비교가 필요한 상황이 더 자주 생길겁니다.

 

다음 방법을 이용해봅시다.

 

vim test1.txt # test1.txt 파일 열고

# 수평 수직 분할은 원하시는걸로 선택
:sp test2.txt # 수평 창 분할로 test2.txt 파일 열기
또는
:vs test2.txt # 수직 창 분할로 test2.txt 파일 열기

:diffthis # 비교하고싶은 창으로 커서를 이동해서 diffthis 명령어 실행
          # test1.txt와 test2.txt로 커서를 옮겨서 각각 실행해주면 diff 모드 실행됨

 

원하는 창으로 커서를 이동하는 방법은 Ctrl + w + 방향키  를 사용하시면 됩니다.

 

vimdiff
내용 다른 파일 수평 분할 비교

 

또 다른 방법으로 파일 비교를 해봅시다.

 

vim test1.txt
:diffs test2.txt # 수평 창 분할의 diff 모드

vim test1.txt
:vert diffs test2.txt # 수직 창 분할의 diff 모드

다른 내용 가져오기 내보내기

 

커서가 위치한 파일에 다른 내용을 가져오거나 커서가 위치하지 않은 파일로 다른 내용을 내보내는 방법입니다.

 

직접 해보시면 이해가 쉽게 됩니다. 다음 예제를 봅시다.

 

vimdiff test1.txt test2.txt

:diffget # 다른 내용 가져오기
:diffput # 다른 내용 내보내기

 

diffget 또는 diffput 으로 두 파일의 내용이 같아지면 아래 이미지처럼 아무것도 보이지 않습니다.

 

diff모드 특성상 같은 내용은 표시를 해주지 않기 때문입니다.

 

diffmode
같은 내용이면 아무것도 안보임

 

이럴 때는 입력 모드로 전환해주면 내용을 볼 수 있습니다.

 

a를 눌러 입력 모드로 전환하면 다음과 같은 화면이나오고 내용이 같아진 것을 확인할 수 있습니다.

 

check-same
내용이 같아진 것을 확인

 

test1.txt에서 다른 내용 가져오기를 실행했으니 test1.txt의 내용이 수정된 것이고

 

반대로 내보내기를 실행했따면 test2.txt의 내용이 수정됩니다.


vi 편집기 창 분할에 대해 알고계시면 사용하기 쉬운 파일 비교입니다.

 

창 분할에 대해 궁금하시다면 아래 글을 참고해주세요.

 

[ Linux ] vi 편집기 사용법 (줄 번호, 창 분할)


여기까지 vi 편집기 파일 비교 방법에 대해서 알아보았습니다.

 

코딩을 할 때 vimdiff를 사용해 코드간 다른 부분을 찾기가 아주 편리하기 때문에

 

잘 이용하시면 작업의 속도가 훨씬 올라갈 겁니다.

 

리눅스에 대한 정보들은 앞으로 꾸준히 업로드할 예정이오니 궁금한 내용은

 

댓글로 남겨주시면 포스팅의 주제로 다루도록 하겠습니다.

 

감사합니다.

반응형