문자열 정렬


vim은 기본적으로 왼쪽으로 정렬되어 있지만 다음과 같이 명령어를 명령 라인에 입력하여 가운데 정렬이나 오른쪽 정렬로 바꿀 수 있다


:left 왼쪽 정렬

:center 가운데 정렬

:right 오른쪽 정렬


vim의 정렬은 현재 화면의 너비를 기준으로 이루어진다. 아래의 그림을 보면 vim의 화면의 너비(textwidth)78으로 설정되어 있고 그에 맞추어 정렬이 이루어진 것을 확인할 수 있다.



화면의 너비(textwidth)tw 옵션에 값을 할당하여 변경할 수 있다.



vim 정렬의 재미있는 점은 화면에서 문자열 정렬이 적용될 행의 너비(칸수)를 직접 결정할 수 있다는 점이다. , 기존에 설정된 화면의 너비(tw)를 무시하고, 한 행의 길이를 첫 칸부터 원하는 칸수 만큼 설정하고 그 칸에서 가운데, 오른쪽으로 정렬할 수 있다

 

:center 50 전체 50 중 가운데 정렬

:right 100 전체 100 중 오른쪽 정렬(tw 값으로 정의된 화면의 너비가 78칸이지만 이를 무시하고 100칸까지 이동함)




Anki 파일


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



vim 설정 파일


우리는 앞에서 탭 사이즈를 결정하고 각종 옵션을 실행하는 방법을 배웠다. 하지만 이 모든 설정은 사실 1회용이다vim을 다시 실행할 때마다 이 모든 설정은 초기화되므로 우리는 번거롭게 그것을 매순간 다시 설정해주어야만 한다. 매번 설정을 다시 하는 것은 너무 번거로우므로 vim을 열 때마다 원하는 옵션이 계속 적용되도록 할 필요가 있다. 어떻게 해야 할까?

 

이를 위해서는 vim의 설정 파일을 이용해야 한다.

 

vim의 설정 파일은 .vimrc 파일이다. 이런 파일이 없으면 홈 디렉터리에 .vimrc 파일을 만들어 두면 vim이 실행될 때 자연스럽게 해당 파일을 읽어서 설정된 내용을 적용할 것이다.

 

앞서 우리가 설정했던 옵션을 실행 시마다 적용하게 하려면 이 .vimrc 파일에 다음처럼 작성하면 된다.


set ts=8

set sw=4

set sts=4

set autoindent

set cindent

※ 명령 라인의 명령을 앞에 콜론(:)만 빼고 그대로 작성하면 된다.


vim은 실행될 때 한번만 설정 파일을 보고 적용하기 때문에 .vimrc 파일을 수정한 경우 vim을 종료하고 다시 실행해야만 해당 내용이 적용된다.


.vimrc 파일은 단순히 vim의 옵션만 저장하는 것이 아니다. 사용자가 지정한 단축키, 매크로, 스크립트 등 vim의 강력한 기능들을 매번 새롭게 만들지 않고 지속적으로 사용하려면 이 .vimrc 파일에 필요한 내용들을 기록할 줄 알아야 한다.


아래에는 .vimrc 파일 견본이다. 다양한 설정들이 기록되어 있는 것을 확인할 수 있다. (큰따옴표(")주석 표시이다.)




Anki 파일


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


024 vim 설정 파일.apkg


번호 옵션 설정


다음처럼 명령 라인에서 옵션을 설정하면 vim 화면에 행 번호를 표시할 수 있다.


:set number

:set nu

※ nunumber를 축약한 표현이다


행 번호 표시를 없애려면 다음처럼 명령 라인에서 옵션을 설정하면 된다


:set nonumber

:set nonu


행 번호를 설정한 화면과 그렇지 않은 화면은 다음과 같다.



들여쓰기 옵션 설정


코딩을 할 때 가독성이 좋게 하려고 들여쓰기를 하는 경우가 많다. 이런 들여쓰기를 쉽게 하기 위해서 vim은 들여쓰기를 옵션으로 설정할 수 있다. 여기에서는 자동 들여쓰기(autoindent)C 스타일 들여쓰기(cindent)를 소개한다


자동으로 들여쓰기새로운 행을 만들 때 이전 행과 동일하게 들여쓰기를 한다.


C 스타일 들여쓰기자동으로 들여쓰기와 유사하지만 왼쪽 중괄호({) 다음 행과 세미콜론(;)이 닫히지 않은 경우 다음 행에는 탭을 추가하고, 오른쪽 중괄호(})가 입력되면 탭을 제거한다.


명령어는 다음과 같다.


:set autoindent 자동 들여쓰기 활성화(on)

:set ai 자동 들여쓰기 활성화(on)

:set noautoindent 자동 들여쓰기 비활성화(off)

:set noai 자동 들여쓰기 비활성화(off)

:set cindent C 스타일 들여쓰기 활성화(on)

:set nocindent C 스타일 들여쓰기 비활성화(off)


Anki 파일


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



'Anki로 공부하기 > vi 또는 vim 익히기' 카테고리의 다른 글

025 vim 문자열 정렬  (0) 2018.06.03
024 vim 설정 파일  (0) 2018.05.31
022 탭(tab) 사이즈 조절  (0) 2018.05.29
021 vim 옵션 설정 방법  (0) 2018.05.28
020 vim의 옵션 개요  (0) 2018.05.27

한국어는 참 훌륭한 언어이다. 이 언어를 쓰면서 사는데 아무 지장이 없고 의사소통하는데도 아무런 지장이 없다. 오히려 그 복잡미묘한 표현의 우수성과 즐거움을 충분히 누리면서 살고 있다. 그런데 이렇게 충분히 좋은 언어생활을 누리고 있는데 영어 공부를 해야 하나?


영어를 언제 사용하고 있는 것일까? 따져보니 사용한 적이 거의 없다. 영어와 관계된 것이라고는 좋아하는 미드를 보는 것이지만 자막 덕분에 불편함 없이 충분히 잘 즐기고 있다. 가끔씩 영어로 된 문서를 읽긴 하지만 사전도 잘 되어 있고 번역 기술도 좋아져서 약간의 영어 문서를 읽는 데는 큰 지장이 없다. 그리고 영어로 된 문서를 읽는 경우가 거의 없다. 국내에 출판되는 양질의 책과 자료를 읽기에도 굉장히 많은 시간을 쓰고 있고 정말 좋은 영어 책들은 번역된다. 정말, 영어를 쓸 일이 없다. 


영어를 열심히 공부하면 외국인 친구를 사귈 수 있다는 사람도 있지만, 한국인 친구도 잘 안 만드는데, 외국인 친구를 왜 만들어야 하는지 잘 모르겠다. 게다가 대화할 공통의 화제를 만드는게 쉬울까? 서로의 문화를 조율하고 서로를 이해하고등등, 평생 같이 산 부부도 힘든 일을 외국인들하고 하라고? 사교적인 사람들이라면 가능하겠지만 나같이 비사교적인 사람은 생각만 해도 힘들고 귀찮고 부담스럽고 너무 힘들다. 그렇다고 딱히 친구를 원하는 것도 아니고 말이다.

 

곰곰히 생각해보면 영어가 정말 필요한 경우는 비즈니스적인 경우인 것 같다. 업무상 뛰어난 능력이 있다는 것을 보여주기 위해서 영어 성적을 제시하거나, 해외에서 비즈니스를 하는 경우에는 정말 필수적인 것이다. 결국, 스펙과 제한적인 해외 영업 말고는 거의 쓸 일이 없는 셈이다. 하지만 40대쯤 되면 토익성적이 스펙이 될 수는 없다. 또, 국내에서 한국말로 영업하는 것도 불편한데 더듬더듬한 영어로 영업을 뛰겠다는 생각이 과연 합리적인지는 잘 모르겠다. 

 

평생 동안 수많은 사람들이 영어에 집착하는 것을 보았지만 사실 감흥이 별로 없었다. 영어를 잘 하면 당연히 좋겠지만 매일매일 공부하고 자책하고 열등감을 갖고 그러면서 영어를 공부해야할 만큼 영어가 필요해본 적이 없었기 때문이다. 그러다 보니 그 가시밭길을 걸어서 영어를 유의미하게 쓸 수준에 도달하는 것이 가능한지 그리고 영어를 유창하게 쓰게 되었을 때 그에 따른 이익이 충분히 있을지 미심쩍기 때문이다. 

 

평생을 영어는 별로 필요없다는 생각으로 살다가 처음 영어 공부가 필요하겠구나 하는 생각이 든 순간이 있었는데 바로 주식 투자를 시작하면서 부터다. 주식 투자를 하게 되면 온 세상의 일에 촉을 세우게 된다. 세상에서 일어나는 모든 일들이 직접 간접으로 환율과 주식과 지수에 영향을 미치기 때문이다. 그래서 국내외의 뉴스를 주의 깊게 들여다볼 수밖에 없게 된다. 그러면서 몇 가지 사실에 눈뜨게 되었다. 우선, 국내의 각종 가십이나 뉴스를 신뢰해선 안된다. 어쩌면 그렇게 일관되게 뉴스와 주가의 방향이 반대로 갈 수 있는지 신기했다. 한창 올라가던 주식이 신문이나 뉴스에 소개되는 순간 주가는 곤두박질 치기 시작한다. 처음에는 신문이나 뉴스들이 소식이 늦고 사실을 검증하느라 뒷북을 치기 때문이라고 생각했는데, 나중에는 주식을 조작하는 작전세력에 반드시 기자가 끼어있거나 공동작업을 하는 것이라는 심증을 갖게 되었다어떻게 아느냐고 묻는다면 증거는 없다그냥 반복되는 패턴과 소문들을 조합한 것이다그러다 보니 국내의 뉴스를 보면 손해가 발생한다라는 생각이 머리에 박혔다. 반면, 해외의 영어로 나오는 정보는 정말 그 양과 깊이가 대단했다. 물론, 영어로 된 뉴스가 국내의 주식에 대해서 언급하는 바는 없다. 하지만 국내의 지수나 국가적 가치에 대한 판단은 결국 글로벌한 투자동향에 좌우되었고 그것을 파악하기 위해서는 해외의 뉴스를 직접 읽어보아야만 했다. 글로벌한 투자 동향에 대한 국내의 뉴스는 결국 해외 뉴스를 번역하여 한참 늦게 나오기 때문에 무조건 영어로된 원문을 읽어야만 했다. 버벅이면서 영어를 한자한자 더듬으면서 읽었을 때, 그 미묘한 맥락을 이해하기 어려웠을 때, 기자가 쓴 글로 기자의 생각과 신뢰도를 추정하기 어려웠을 때 처음으로 영어가 아쉬워졌다. 그리고 영어로 된 뉴스들이 다음날이나 바로 그 다음날 국내에 번역되면서 입맛대로 왜곡하거나 이상하게 번역되어 나오는 것을 보면서 정확한 정보를 얻기 위해선 반드시 영어를 알아야 하는구나 하는 깨달음을 얻게 되었다. 

 

슬프지만 주식 투자는 망했고, 해외 뉴스를 보면서 연구할 일이 사라지면서 다시 영어에 대한 관심이 식으려고 했지만 이번에는 조악하게 번역한 책들이 다시 한번 영어의 필요성을 환기시켜 주었다. 사람들이 주목하는 베스트셀러나 대작들은 충분히 멋진 번역가들이 이해할 수 있는 언어로 책을 번역해준다. 하지만 마이너한 분야의 책들은 정말 번역의 질이 좋지 않다. 전문 번역가는 해당 분야를 잘 모르기 때문에 번역이 어렵고, 해당 분야의 전문가들은 번역의 전문가가 아니기 때문에 글을 살리지 못하는 경우가 허다하다. 더구나 최근에는 구글 번역기가 좋다는 이야기가 많아져서인지 번역을 이것으로 하는 사람들이 정말 많아진 듯하다. 나도 개인적으로 Anki 매뉴얼을 번역하면서 구글 번역기를 사용했는데, 이 구글 번역기가 상당히 악질적이라고 느꼈다. 초창기 구글 번역기는 번역을 못하는 것이 너무 명확했다. 누가 봐도 못한 번역이기 때문에 그 부분은 다시 번역한다. 하지만 최근의 구글 번역기는 조금 달라졌다. 얼핏 보기에는 무언가 문장이 잘 성립하고 있는 것처럼 보여 잘 번역된 것처럼 보인다. 그런데 잘 들여다보면 정말 이상한 문장이 완성되어있다. 마치 문장이 아닌 비문을 교묘하게 만들어 삽입하는 것 같은 느낌이다. 한참을 읽어봐야 이 문장이 정말 이상하구나 하고 느낄 수 있을 정도로 교묘하다. 그래서 이런 점을 인지하지 못하는 사람들이 그냥 구글 번역기를 돌리고 대략적인 손질만 해서 출판하는 경우가 종종 있는 것 같다. 그리고 그런 책들은 대부분 마이너한 취향의 책들이다. 이런 경우가 몇번이나 반복되면서 어느 날은 책을 읽다가 차라리 원서로 보는 게 낫다는 생각이 들기 시작했다

 

이후 영어 공부를 조금 시도해보았고 몇 가지 중요한 변화의 계기도 생겨서 영어 수준이 조금 올라가게 되었다. 덕분에 정말 좋아하는 미드 시리즈를 자막 없이 보게 되었다. 물론, 자막 없이 미드를 볼 수준이라서가 아니라 그 미드를 거의 20번 이상 봤기 때문에 내용을 전부 알고 있어서 자막 없이 봤을 뿐이다. 그리고 그 동안 미드를 제대로 보지 않았다는 사실을 알게 되었다. 무려 20번 이상을 반복하면서 보았던 미드인데도 자막 없이 보니 마치 처음 보는 것처럼 낯설고 신기했다배우의 표정이나 목소리억양 등 그 모든 표현이 생생하게 보이면서 더욱 뛰어난 몰입감과 즐거움을 주었던 것이다그 동안 스스로 미드를 보았다고 생각했지만 실은 자막을 본 것에 불과했던 셈이다. 

 

영어를 잘 하면 좋은 점에 대해서 하나 둘씩 체감하면서 영어를 잘하는 것이 단순히 업무적인 문제가 아니라는 점을 깨닫게 되었다. 영어를 알면 보다 양질의 객관적인 정보를 얻을 수 있고 전 세계의 최고의 석학들이 제공하는 논문을 자유롭게 읽을 수 있으며, 방대한 문학과 드라마를 절절하게 즐길 수 있게 된다. 뿐만 아니라 영어를 무시할 때는 보지 못했지만 영어를 보고 익히기 시작하면서 그 동안 몰랐었던 다양한 것들이 눈에 들어오기 시작했다. 방대하고 훌륭한 양질의 자료와 인프라, 새로운 시도들, 각 대학 홈페이지에서 제공하는 노벨상 수상자의 직강들 영어를 잘 쓸 수 있다면 전 세계와 소통할 수 있고 전 세계에서 가장 양질의 자료를 볼 수 있으며 가장 신뢰할 수 있는 정보를 획득하게 되는 셈이다. 


인터넷의 발달과 더불어 전 세계에 자유롭게 접속할 수 있는 현재에 영어는 단순히 외국인과 대화하는 수단에 머물지 않는다. 이제 영어는 세계의 정보에 접속하기 위한 가장 기본적인 소양이 되었다. 그리고 이러한 소양이 있는 사람과 그렇지 않은 사람의 삶은 크게 달라질 수밖에 없을 것이다. 결론적으로 말하면 영어가 없어도 잘 살 수 있지만 영어를 잘 하게 되면 보다 넓은 세계를 보게 되고 보다 많은 기회를 얻을 수 있을 것 같다

탭(tab) 사이즈


프로그램을 작성할 경우에는 코드의 가독성(readibility)을 위해서 들여쓰기(indent)를 하는 경우가 많다이 때 들여쓰기를 하는 기본 단위는 (tab)의 사이즈. 또한, 자동 들여쓰기(autoindent)를 쓸 때도 이러한 탭 사이즈에 따라서 실제 적용되는 양상이 달라지게 된다. 또한, 프로그래밍 언어마다 다른 탭 사이즈를 적용하는 것이 바람직한 경우도 있다. 여튼, 탭 사이즈 조절이 필요하다.


앞에서 :set 명령으로 옵션을 설정하는 것을 배웠다. 이제 배운 것을 응용하여 탭 사이즈를 조절해보자.

  

탭 사이즈와 관련된 vim의 옵션에는 ts(tabstop), sw(shiftwidth), sts(softtabstop) 등이 있다.


tabstop(ts)


vim의 옵션 ts에 설정된 값은 문서에서 탭을 의미하는 문자 '\t'를 몇 칸의 공백으로 나타낼지를 결정하는 값이다. ts 옵션을 4로 변경하려면 다음처럼 명령 라인에 명령어를 입력하면 된다. 


:set ts=4 → 문자 탭(\t) 4칸의 공백으로 표시되도록 설정

※ 보통 리눅스 커널 소스에서는 문제가 일어날 수 있으므로 ts의 값을 8에서 바꾸지 말기를 권한다. 


shiftwidth(sw)


vim의 옵션 sw는 문서 편집을 위하여 들여쓰기(indent)를 할 때 적용되는 탭의 사이즈를 의미한다. 즉, 자동 들여쓰기(autoindent)를 할 때, 또는 >> 키를 눌러 탭을 삽입하거나 << 키를 눌러 탭을 제거할 때 적용되는 탭 사이즈이다.


:set sw=4  들여쓰기는 4칸 단위로 이루어지도록 설정


softtabstop(sts)


vim의 옵션 sts가 우리가 흔히 아는 탭 사이즈다. 즉, 키보드에서 [Tab]키를 눌렀을 때, 적용되는 탭 사이즈다. 


:set sts=4  탭키를 누르면 4칸 뒤로 이동하도록 설정


Anki 파일


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





:set 으로 옵션 설정


앞서 포스팅한 옵션 개요에서 :set all 명령어로 살펴본 옵션은 너무 많았다

명령 라인에 :set all 명령이 아닌 :set 을 실행해보면 현재 설정된 주요 옵션들만 간략하게 볼 수 있다.


:set


:set 명령으로 나타난 옵션들은 다음 사진과 같이 한 화면 내에 간략하게 나타난다.


 


:set 명령으로 옵션을 조작할 수 있다.

 

우선 on/off만 있는 옵션의 경우 다음과 같이 조작한다.


:set 옵션이름 해당 옵션을 활성화(on)

:set no옵션이름 해당 옵션을 비활성화(off)

:set 옵션이름! 해당 옵션의 on, off 상태를 서로 전환(toggle)


특정 값을 갖는 옵션은 다음과 같이 :set을 사용하여 조작한다.

 

:set 옵션이름=특정값 해당 옵션에 특정 값을 할당

:set 옵션이름 당 옵션이 갖고 있는 값을 표시


Anki 파일


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



전체 옵션 열어보기


모든 소프트웨어들처럼 vim도 사용자 입맛에 맞게 튜닝이 가능하도록 다양한 옵션을 갖고 있다. 당연한 이야기지만 이 모든 옵션들을 다 숙지할 필요는 없다. 필요한 옵션을 찾아서 그때그때 적용하는 것으로도 vim을 잘 쓰는데 충분하다.

 

그럼에도 vim 옵션에 대해서 언급하지 않으면 vim이 다른 에디터처럼 다양한 메뉴를 제공해주는 것도 아니어서 초심자들은 옵션이 있는지도 모르고 지나갈 수도 있다(실은 제가 그랬습니다). 그러니 몇 가지를 우선 짚어보자.

 

우선vim에서 옵션이란 것이 어떤 것이 있는지 확인하는 것이 먼저일 것이다.

 

vim의 모든 옵션을 보고 싶으면 명령 라인으로 들어가서 다음의 명령어를 입력하면 된다. 


:set all


명령어를 입력하면 다음의 사진과 같이 모든 옵션들이 표시된다. 



vim 옵션의 종류


위의 사진에서 정말 많은 옵션들을 확인할 수 있다. 옵션을 한 페이지에 모두 보여줄 수 없어 화면 하단에는 -- -- 라는 표시가 나타나 있다. 이 상태에서 [Enter] 를 치면 한 줄씩 화면이 내려가고, [Space] 를 누르면 한 화면씩 내려간다. 화살표의 , j, k 모두 한 줄씩 화면을 옮기면서 원하는 옵션을 찾을 수 있도록 되어 있다. q 키를 누르면 바로 원래 화면으로 돌아간다.

 

보이는 옵션들 중에서 몇 가지 특징이 보이는데, 우선 옵션들이 열을 지어 나열되어 있다. 이 중 글자가 열을 맞추지 않고 튀어나온 옵션들이 보이는데 이는 모두 'no'라는 글자가 앞에 붙은 경우임을 알 수 있다. no'라는 글자를 제외하고 보면 옵션들이 알파벳순으로 나열되어 있음을 확인할 수 있다. 등호(=)가 붙어있는 옵션이 있고, 등호(=)가 있는 옵션들 중에서 등호에 어떤 값이 연결되어 있는 경우와 그렇지 않은 경우로 나누어진다.

 

이는 다음과 같은 것이다.


vim에서 옵션은 그저 키고 끄는 것만 있는 즉, on/off만 있는 옵션특정 값을 갖는 옵션두 종류로 크게 나눠볼 수 있다.

 

on/off만 가능한 옵션들은 off가 되었을 경우에는 앞에 'no'를 붙인다. 

 

, 등호(=)가 붙어 있는 옵션들은 어떤 값을 갖는 옵션들이다. 물론, 이 등호(=) 뒤에 값이 설정되어 있지 않은 옵션들은 활성화되지 않은 옵션이다.


Anki 파일


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


020 vim의 옵션 개요.apkg


블록 지정 후 커서 이동


앞서 포스팅에서는 블록 지정이 가능한 모드로 진입하면서 화살표 키h, j, k, l 키를 사용하는 것만 이야기했지만 vim명령 모드에서 사용하는 이동 관련 키들이 대부분 먹는다. 그래서 명령 모드에서 이동하듯이 단어 단위 행단위 또는 문장 단위 등으로 그냥 이동하면 된다.


, :[n] 명령을 쓰게 되면 원하는 행으로 바로 이동하지만 블록 지정이 풀리게 되므로 쓰지 않는 것이 좋다. 


블록 지정 후 사용 명령어


작업하고자 하는 부분을 블록으로 지정한 후 다음과 같은 작업을 수행한다. 


y → 블록 지정된 영역 복사

d → 블록 지정된 영역 삭제

> 라인() 앞에 탭 삽입

< 라인() 앞에 탭 삭제


~ 대소문자 상호 전환(대문자는 소문자로, 소문자는 대문자로 전환)

대문자 U 모두 대문자로 만듦

소문자 u 모두 소문자로 만듦(블록으로 지정되어 있는 영역에서 명령 취소가 아님)


콜론(:) 블록으로 지정된 영역에 한해 명령 라인 명령 (블록 지정된 상태에서 콜론(:)키를 누르면 명령 라인에 :'<,'>와 같은 형태가 자동으로 나타난다. '<,'> 표시는 블록으로 지정된 범위를 의미한다. 따라서 이 상태에서 명령 라인의 명령어를 다음처럼 작성하면 블록으로 지정된 범위에만 명령 라인 명령을 실행할 수 있다.

:'<,'>w test.txt 블록으로 지정된 부분만 test.txt 파일로 저장


 

Anki 파일


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



블록 지정


한글이나 워드 등을 써본 사람이라면 [Shift]를 누른 채 화살표 키를 눌러서 원하는 영역을 지정해서 복사, 삭제, 잘라내기 등을 해본 경험이 있을 것이다. 이때 우리가 지정한 영역이 반전되어 아래와 같이 나타나는데 이를 블록이라고 한다.


블록으로 지정된 부분  ← 블록으로 지정된 모습


이렇게 블록으로 지정하는 것이 얼마나 편한지는 이야기하지 않아도 잘 알 것이다.

 

vim은 다양한 상황에서 쉽게 블록 지정이 가능하도록 3가지 모드를 제공하고 있어서 이 사용법에 익숙해지면 마우스를 쓰지 않고도 편하게 다양한 상황에서 블록을 지정하여 편집할 수 있게 된다. 

 

vim에서 블록을 지정할 수 있게 해주는 3가지 모드는 비주얼 모드, 비주얼 라인 모드, 비주얼 블록 모드라고 부른다.



비주얼 모드(VISUAL MODE)


우리가 흔히 아는 블록 지정 방식이다. 원래 커서 위치에서 옮겨진 커서 위치까지 순차적으로 글자 단위로 블록이 지정된다


비주얼 모드로 진입하려면 명령 모드에서 소문자 v 키를 누르면 된다


명령 모드에서 소문자 v 키 → 비주얼 모드로 진입


이 때편집창 하단에 비주얼(또는 VISUAL) 이라는 표시가 뜨고 이 상태에서 화살표 키나 h, j, k, l 키들을 눌러 커서를 움직이면 원래 커서 위치에서 옮겨진 커서 위치까지 글자 단위로 아래의 그림처럼 블록이 지정된다



비주얼 라인 모드(VISUAL LINE MODE)


비주얼 라인 모드는 그야말로 라인(행) 단위로 지정되는 모드다. , 블록은 무조건 하나의 라인(행) 단위로 생기는 것이다


비주얼 라인 모드로 진입하려면 명령 모드에서 대문자 V 키를 누르면 된다


명령 모드에서 대문자 V 키 → 비주얼 라인 모드로 진입


이 때, 편집창 하단에 비주얼 라인(또는 VISUAL LINE)이라고 표시가 뜨고 이 상태에서 화살표 키h, j, k, l 키들을 눌러 커서를 움직이면 원래 커서 위치에서 옮겨진 커서 위치까지 라인() 단위로 아래의 그림처럼 블록이 지정된다



비주얼 블록 모드(VISUAL BLOCK MODE)


비주얼 블록 모드는 현재 커서 위치에서 옮겨진 커서 위치까지 사각형의 블록을 지정할 수 있게 해준다. 그래서 열 모드(column mode)라고도 불리우는데 이는 일반적인 에디터와 다르게 열단위로도 블록 지정이 가능하기 때문이다. 이를 이용하면 엑셀에서 스프레드 시트를 셀 단위로 지정하여 조작하는 것과 비슷한 효과를 얻을 수 있다. 


비주얼 블록 모드로 진입하려면 명령 모드에서 대문자 <Ctrl+v> 키를 누르면 된다.


명령 모드에서 <Ctrl+v> 키 → 비주얼 블록 모드로 진입


이 때, 편집창 하단에 비주얼 블록(또는 VISUAL BLOCK)이라고 표시가 뜨고 이 상태에서 화살표 키h, j, k, l 키들을 눌러 커서를 움직이면 원래 커서 위치에서 옮겨진 커서 위치까지 사각형의 박스를 그리며 아래의 그림처럼 블록이 지정된다.

 

Anki 파일


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


018 블록 지정의 비주얼 모드.apkg


잘라내기(cut)


앞서 포스팅한 레지스터에 대한 내용을 이해했으면 vim에서는 잘라내기(cut)라는 것이 별도로 없다는 것을 눈치챌 수 있을 것이다. 이는 삭제한 데이터가 없어지지 않고 레지스터에 바로 들어가기 때문이다. 따라서 그냥 삭제하고 필요한 곳에서 pP키로 붙여넣으면 된다


, vim에서는 삭제가 곧 잘라내기(cut)이므로 별도의 잘라내기(cut) 키가 필요없다.



명령취소(Undo) 및 재실행(Redo)


문서를 편집할 때 실행을 취소하는 undo(보통 Ctrl+z)와 실행 취소한 것을 다시 재실행하는 redo 기능을 잘 쓰면 실수한 것을 되돌릴 수 있어 정말 편하다vim에도 동일한 기능이 있다. 바로 명령 모드에서 u<Ctrl+r> 이다


u 명령 취소(Undo)로 바로 이전에 행한 명령 취소

<Ctrl+r> 재실행(Redo)으로 이전에 명령 취소(u)한 것취소

※ vim에서 명령취소(u키)의 파워는 매우 강력해서 거의 대부분의 작업을 역순으로 감아올릴 수 있다



이전 작업 반복하기


마침표(.)를 쓰면 이전에 한 작업을 그대로 반복할 수 있다.


즉, 바로 앞에 명령 모드에서 명령어로 작업을 했다면 해당 명령어를 통한 작업을 반복하고,


바로 앞에 편집 모드에서 들어가서 문서를 작성한 후 [Esc] 키를 눌러 명령 모드로 돌아왔다면 마침표(.)를 누르면 편집 모드에서 [Esc] 키를 눌러 명령 모드로 돌아오기 전까지 입력한 내용들p와 동일한 방식으로 붙여넣기 된다. 이는 ". 레지스터에 있는 내용들을 p로 붙여넣기 하는 ".p 와 동일한 결과를 보여준다

 

명령 모드에서 dd.  → 커서가 위치한 행을 지우고 밑에 있는 행을 끌어올린 후 다시 동일한 작업 반복

명령 모드에서 x.   → 커서가 위치한 한글자를 지우고 다시 동일한 작업 반복

명령 모드에서 iloveu[Esc]jj. → 편집 모드로 들어가(i키) "loveu"라는 문자열을 타이핑한 후 다시 명령 모드로 돌아와([Esc]키) 현재 위치에서 2행 아래로 내려가서(jj키) "loveu" 라는 문자열을 p로 붙여넣기(.키)


Anki 파일


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


017 잘라내기, 명령취소(undo), 재실행(redo), 이전 작업 반복하기.apkg

+ Recent posts