목록vim (24)
살아가는 이야기

언제인가부터 Vim을 실행한 후 저장하면 un~ 파일이 생성되었다. 알고 보니 undo 기능을 저장하기 위해 vim에서 자동으로 사용하는 파일이라고 한다. un~ 파일 자동 생성을 끄려면 vimrc 파일에 다음 선언을 추가해 주면 된다. set noundofile
Unix(Linux 동일함)에서는 줄바꿈문자를 하나의 문자 LF(line feed, \n) 하나로 나타내지만 Dos(Windows)에서는 줄바꿈문자를 두 개의 문자 CR(carriage return, \r), LF 두 개로 나타낸다. 그래서 Unix에서 작성한 문서를 메모장에서 보면 아래와 같이 보인다.Vim을 이용하여 이를 Dos 형식으로 바꿀 수 있다. 방법은 Vim으로 해당 파일을 연 다음에 다음 명령어를 이용하면 된다. 그리고 저장하면 바로 Dos 형식으로 바뀐다. :set ff=dosVim을 실행시키는 것이 귀찮다면 다음과 같이 할 수 있다.vim +':set ff=dos' +':wq' 파일이름그러면 아래와 같이 Dos 형식으로 바뀐 것을 메모장에서 확인할 수 있다. 표준의 중요성을 느끼게 되는..
Windows 7에서 이상하게 Vim 스왑파일을 지울 수 없었다. 어떤 때는 "Access is denied"가 발생하고 어떤 때는 지워지는 듯 했다가(del 명령어가 정상적으로 수행되고 실제로 파일도 지워짐) 다시 나타나는 일이 계속 반복되었다. 관리자 권한으로 명령 프롬프트를 실행한 후에 지워도 같은 현상이 나타났고 아무리 인터넷을 검색해 봐도 이유를 찾을 수 없었다.그러다가 혹시나 하는 마음에 작업관리자(taskmgr)를 실행시켜 보니, vim 프로세스가 좀비로 남아있지 않은가! 좀비 프로세스를 제거하니 아무런 문제 없이 지워졌다. 혹시나 비슷한 문제로 고민하시는 분은 작업관리자를 실행한 후 프로세스 목록을 한번 보시기 바란다.
Vim 에디터에서 현재 커서의 위치를 보여 주는 설정이 기본으로 꺼져 있는 경우가 있다. 이런 경우에는 .vimrc(윈도우인 경우에는 _vimrc)에 다음 행을 추가해 주면 된다.set ruler왜 이것을 기본으로 하지 않았을까? 단순히 취향인가?
Vim 플러그인을 쉽게 설치하도록 하기 위해서 Vimball 파일이라는 것이 생겨났다. 플러그인의 적합한 위치에 파일들을 복사해 주는 것이 임무인데, 그러기 위해서는 Vimball 파일을 어디에 저장해야 한다. 그 파일을 target.vba라고 하자. 그러면 저장 폴더에서 다음과 같이 차례로 수행하면 된다.> vim target.vba:so %:q
vim에서 탭문자를 공백문자로 자동으로 바꾸는 방법이 있다. 간단히 다음과 같이 적어 주면 된다. set expandtab 주의 1: 이미 탭으로 입력된 내용을 바꾸지는 않는다는 점에 주의하자. 즉 expandtab을 해도 편집할 때 새로 입력한 탭만 공백으로 바꾼다. 주의 2: make의 입력인 Makefile에서는 이 옵션을 쓰면 제대로 동작하지 않을 수 있다. 참고로 내가 항상 설정해 두는 옵션을 다시 한 번 정리하면 다음과 같다. 매번 정리하지만 자꾸 잊어버리게 된다. set ts=4 set sw=4 set expandtab set nobackup hi preproc ctermfg=cyan
Vim 7.2 이상부터 ^C와 ^V가 복사, 붙여넣기로 바뀌었다. 정말 편리한 기능이긴 하지만 이전에 있었던 ^V를 사용해야 할 때, 참 난감하다. 어떻게 하면 이전의 ^V를 사용할 수 있을까? 해답은 ^V 대신 ^Q를 쓰는 것이다. 이렇게 허무하게 쉬울 수가!
바로 아래 글에서 vimdiff를 이용하여 두 파일을 비교할 수 있다는 것을 적었다. 이 글에 적은 것처럼 Ctrl-ww를 이용하면 두 윈도우 사이를 이동할 수 있다. 그리고 필요한 부분을 그냥 vim 편집 명령어를 이용하여 편집할 수 있다. 그런데 다른 부분을 그냥 합치는 것이 목적이라면 반대편 파일과 같은 내용으로 키보드를 두드려 수정해야 하는데, 이것을 수작업으로 한다는 것은 컴퓨터를 무시하는 처사가 아닐 수 없다. 간단한 사용법을 여기 적겠다. dp: 커서가 있는 쪽의 내용을 반대 쪽에 복사해 놓는다. (Duplicated Put이 아닐까 생각해 보았으나 Diff. Put(:diffput)이었다.) do: 커서가 없는 쪽의 내용을 이쪽에 복사해 놓는다. (Duplicate from the Othe..