Byeo

5. Vimrc-4 (편집 위치 불러오기) 본문

프로그래밍 (Programming)/Vim

5. Vimrc-4 (편집 위치 불러오기)

BKlee 2021. 7. 15. 00:34
반응형

목차

코드

해석

안되는 경우 (not working)

 

 

 

vim을 사용하다 보면 이전에 편집했던 위치를 기억하는게 편한 경우가 많습니다. 특히, 작성한 코드가 길 때 매우 편해집니다.


코드

 

이를 위해서는 다음 코드를 ~/.vimrc 에 넣으면 됩니다.

autocmd BufReadPost *
      \ if line("'\"") > 0 && line("'\"") <= line("$") |
      \ exe "normal g`\"" |
      \ endif

해석

autocmd BufReadPost *

autocmd : vim에서 event가 발생했을 때 자동으로 명령을 수행하도록 합니다.

BufReadPost: autocmd가 실행 될 event입니다. 파일을 읽은 뒤, 새 버퍼를 편집할 때 코드가 실행됩니다.

* : 모든 파일에 적용됩니다.

if line("'\"") > 0 && line("'\"") <= line("$") |

line("'""): 작은따옴표, 큰따옴표 ('")가 위치하고 있는 줄 번호를 의미합니다.

line("$"): "$"는 문서 끝을 의미합니다. 즉, 마지막 줄입니다.

 

즉, 작은따옴표, 큰따옴표 ('")의 위치가 1번부터 현 문서 끝 사이에 있는지를 확인합니다.

작은따옴표, 큰따옴표의 의미는 뭘까요?

 

이는 vim에서 기본적으로 제공하는 mark로, vim 편집을 종료하기 직전의 위치를 의미합니다.

더 많은 mark들은 [vimhelp]에서 확인하실 수 있습니다.

exe "normal g`\"" |

:exe "normal g`"" 를 vim에서 직접 입력한 것과 동일합니다.

exe는 말그대로 뒷 문장을 실행하는 것을 의미합니다.

 

normal g`" 에서 normal은 보통 모드, 즉 visual mode도 아니고 edit mode도 아닌 상태입니다.

g는 global mode를 의미하기도, 혹은 goto the line number를 의미하기도 한다네요. 일단 저는 g를 빼도 동작하는데, 자세한 내용은 더 알아봐야 할 듯 합니다.

 

`\" 는 말 그대로 키보드에서 '" 를 누른 것과 동일합니다. 단순히 vim 편집 창에서 조금 움직여본 뒤 (물결표 위, 그레이브 키)와 " (큰따옴표)를 입력 해보세요.

      \ endif

if문을 종료합니다.


효과가 없는 경우 (not working)

예전에 어느 포스트에서 본 기억이 있는데, ~/.viminfo의 소유자가 본인이 아니여서 먹히지 않는 경우가 있다고 합니다.

이 에러의 경우,

chown byeo:byeo ~/.viminfo

와 같이 소유자를 바꿔주면 됩니다.


마지막 편집 위치 기억은 구글링 하면 많이 찾아볼 수 있습니다. 저는 이 코드를 조금 해석해보고자 했는데, 조사를 할수록 엄청나게 많은 기능들을 지원한다는 사실에 놀라게 되네요.

반응형

'프로그래밍 (Programming) > Vim' 카테고리의 다른 글

6. Vimrc-5 (Space & Tab)  (0) 2021.07.27
4. Vimrc-3 (Folding)  (0) 2021.07.12
3. Vimrc-2 (UI)  (0) 2021.07.09
2. Vimrc-1 (테마)  (0) 2021.07.08
1. Vim 기초  (0) 2021.07.02
Comments