vim 55

Learn Vimscript The Hard Way - 51. Potion Section Movement - part two

Potion Section Movement - part two 해당 장도 길이가 길기 때문에 두 파트로 나누어서 작성하였다. Potion section movement - part one에서 이어지는 글이다. Top Level Text Sections 첫 번 째 let pattern = '...'을 다음으로 변경해보자. let pattern = '\v(\n\n^\S|%^)'이 정규표현식의 동작을 이해하기 위해서 아래의 "section" 정의를 다시 기억해보자. 빈 줄 뒤에 오는 줄 (첫 글자가 띄어쓰기가 아닌)이나 파일의 첫줄 \v는 우리가 몇 번 다뤘던 "very magic" 모드이다. 나머지는 두 옵션으로 나눠진 정규표현식이다. 첫번째는 \n\n^\S인데, 이는 "빈 줄 ..

tools/vim 2020.05.06

Learn Vimscript The Hard Way - 51. Potion Section Movement part 1

Potion Section Movement - part one 해당 장도 길이가 길기 때문에 두 파트로 나누어서 작성하였다. 저번 장에 우리는 어떻게 section movement가 작동하는지 살펴보았다. 이를 potion 파일에 적용하기 전에 한번 다시 생각해보자. 우선 우리는 Potion 파일에서 "section"이 어떤 것을 의미할 것인지를 결정하여야 한다. 두 쌍의 section movement 명령어가 있으므로 우리의 사용자들을 위한 두가지 "schemes"를 마련할 수 있다. 다음 두 가지 스키마를 potion의 섹션으로 결정하자. 빈 줄 이후에 오는 모든 줄 이나 파일의 첫 줄(whitespace가 아닌 문자가 있는 줄) 첫 글자로 whitespace가 아닌 문자가 있고, 줄 안에 등호 문자..

tools/vim 2020.05.05

Learning Vimscript The Hard Way - 50. Section Movement Theory

Section Movement Theory 만약 당신이 vim의 section movement ([[, ]], [], ][)를 써 보지 않았다면, 지금 :help section을 읽는 시간을 가져보아라. 아직 헷갈려도 괜찮다. 나(저자)도 처음 읽었을 때 그랬었다. 우리는 코드를 작성하면서 이 movement들이 어떻게 동작하는지 살펴보고 다음 장엣허 이를 지원하는 potion 플러그인을 작성할 것이다. Nroff Files 4가지의 "section movement" 명령어는 파일의 "sections"간에 이동하는 것을 의미하고 만들어졌다. 이 모든 코멘드들은 기본적으로 nroff 파일에서 사용되도록 디자인되어졌다. Nroff는 LaTeX나 Markdown같은 언어이다. (UNIX man page에서 사..

tools/vim 2020.05.04

Learn Vimscript The Hard Way - 49. Advanced Folding - part 3

Advanced Folding - part 3 해당 장은 매우 길기 때문에 시리즈로 작성할 예정이다. Advanced folding - part 1 Advanced folding - part 2 Advanced folding - part 3 Finishing the Fold Function 꽤 긴 챕터였으므로, 이제 슬슬 folding 함수를 마무리지어보자. GetPotionFold 함수를 다음과 같이 수정해보라. function! GetPotionFold(lnum) if getline(a:lnum) =~? '\v^\s*$' return '-1' endif let this_indent = IndentLevel(a:lnum) let next_indent = IndentLevel..

tools/vim 2020.05.03

Learn Vimscript The Hard Way - Advanced Folding : part 2

Advanced Folding - 2/3 해당 장은 매우 길기 때문에 파트를 나눠서 작성할 예정이다. 이전 장을 읽고 이어 읽기를 추천한다. Blank Lines 우선 특수한 케이스인 빈 줄을 먼저 살펴보자. GetPotionFold을 다음과 같이 수정하자. function! GetPotionFold(lnum) if getline(a:lnum) =~? '\v^\s*$' return '-1' endif return '0' endfunction우리는 if절을 추가하여 빈 줄(blank line)에 대해 처리하였다. 어떻게 동작하는 것일까? 먼저 우리는 getline(a:lnum)을 사용하여 현재 줄의 내용을 string으로 받았다. 이를 '\v^\s*$..

tools/vim 2020.05.02

Learn Vimscript The Hard Way - 49. Advanced Folding - part 1

Advanced Folding - 1/3 해당 장은 매우 길기 때문에 파트를 나눠서 작성할 예정이다. 저번 장에서는 vim의 indent 폴딩을 사용하여 potion 파일에 대해 빠르고 지저분한 fold를 추가하였다. factorial.pn을 열어서 zM으로 모든 폴딩이 닫혀있는 것을 확인하라. 해당 파일은 다음과 같아 보일 것이다. factorial = (n): +-- 5 lines: total = 1 10 times (i): +-- 4 lines: i string print 첫 번째 fold를 열면 다음과 같아진다. factorial = (n): total = 1 n to 1 (i): +--- 2 lines: # Multiply the running total. total. 10 times (i): ..

tools/vim 2020.05.01

Learn Vimscript The Hard Way - 48. Basic Folding

Basic Folding 만약 당신이 vim에서 folding을 한 번도 사용하지 않았다면, 당신은 무엇을 놓치는지 모를 것이다. :help usr_28을 읽고 일상적인 작업에서 이를 적용시키면서 시간을 보내보아라. 그것이 손에 조금 익었을 때 다시 해당 챕터로 돌아와라. Types of Folding vim은 6가지 다른 fold 방식을 제공한다. Manual 직접 손으로 fold를 생성하면 RAM에 저장된다. vim을 닫으면 fold들은 모두 사라지고 다시 만드어야 한다. 이 방식은 몇몇 custom mapping을 만들어 fold를 만들 때 쉽게 사용 가능하다. 이 책에서는 다루지 않지만, 쉽게 사용이 필요할 때 이런 방식을 사용할 수 있다는 점을 생각해 두면 좋다. Marker vim은 실제 텍스..

tools/vim 2020.04.29

vim fold 기본 사용법 - fold 없는 vim은 팥 없는 찐빵?

Vim fold fold는 아주 강력한 기능이다(고 하지만 나도 일상적인 코드 작성시에 fold를 잘 활용하고 있지는 않다.) 주변에 vim 사용자가 별로 없기도 하지만, 실제로 vim을 사용하면서 fold를 잘 활용하는 경우를 많이 보지 못했다. fold 기능 자체가 별로 필요가 없어서 그랬을 수 있지만, 매우 강력한 vim의 fold 기능을 잘 활용하지 못하고 있는 듯 하여 앞으로 fold를 잘 활용해 보기 위해 이번 포스트 시리즈를 작성하게 되었다. vim의 fold 기능과 해당 문서가 꽤 방대하기 때문에 위 글은 시리즈로 작성할 에정이다. 다음과 같은 방식으로 작성될 예정이다. 1. vim의 fold 기본 사용법 - fold 없는 vim은 팥 없는 찐빵 2. fold 활용하기 3. fold 저장/..

tools/vim 2020.04.28

Learn Vimscript The Hard Way - 47. Even More Advanced Syntax Highlighting

Even More Advanced Syntax Highlighting syntax highlighting의 마지막 중요한 파트를 다룬 후 다른 것으로 넘어갈 것이다. 더 많은 것을 배우고 싶다면 :help syntax를 참고하고 다른 사람들이 어떻게 syntax file을 만들었는지 참고하라 Highlighting Strings Potion은 다른 많은 프로그래밍 언어들처럼 "Hello, world!"와 같은 string literal을 지원한다. 우리는 이들을 하이라이팅 해우저야 한다. 이를 위해 syntax regino 명령어를 사용할 것이다. syntax region potionString start=/\v"/ skip=/\v\\./ end=/\v"/ highlight link potionStrin..

tools/vim 2020.04.27

Learn Vimscript The Hard Way - 46. Advanced Syntax Highlighting

Advanced Syntax Highlighting 지금까지 우리는 potion file에 대해 기본적인 하이라이팅을 추가하였다. 만약 저번 장(Basic syntax highlighting)을 공부하지 하지 않았다면 가서 하고 오길 바란다. Highlighting Comments Potion에서 꼭 필요한 하이라이팅 중 하나는 주석이다. Potion 주석은 #으로 시작하는데, 이는 iskeyword에 포함되지 않기 때문에 문제가 발생한다. iskeyword의 뜻을 모른다면 위의 얘기를 듣지 않은 것이다. "Go back and do the damn exercises." (실제로 이렇게 적혀있음 ㅋㅋ) #이 키워드 캐릭터가 아니기 때문에 이것과 주석을 매치시킬 수 있는 정규표현식이 핑료하다. 그래서 sy..

tools/vim 2020.04.26