vimscript 45

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*$&#3..

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

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

Learn Vimscript The Hard Way - 45. Basic Syntax Highlighting

Basic Syntax Highlighting 이제 potion plugin을 작성하기 위한 기본적인 boilerplate를 작성했다. 이제 간단한 syntax 하이라이팅부터 시작해볼 것이다. syntax/potion.vim을 만들고 다음 코드를 추가해보자. if exists("b:current_syntax") finish endif echom "Our syntax highlighting code will go here." let b:current_syntax = "potion"이제 factorial.pn을 열어보자. 다른 플러그인의 동작에 따라 위 메세지가 보일 수도, 보이지 않을 수도 있다. :messages 명령어를 실행시키면 위에서 작성한 syntax/potion.vim이 로드된 것을 확인할 수 ..

tools/vim 2020.04.25

Learn Vimscript The Hard Way - 44. Detecting Filetypes

Detecting Filetypes 이제 우리의 플러그인에서 사용할 간단한 Potion 파일을 만들자. factorial.pn 파일을 만들어서 다음 코드를 추가하라 factorial = (n): total = 1 n to 1 (i): total *= i. total. 10 times (i): i string print '! is: ' print factorial (i) string print "\n" print.이는 간단한 factorial 함수를 보여준다. potion factorial.pn을 실행시키면 다음 결과가 반환된다. 0! is: 0 1! is: 1 2! is: 2 3! is: 6 4! is: 24 5! is: 120 6! is: 720 7! is: 5040 8! is: 4032..

tools/vim 2020.04.24

Learn Vimscript The Hard Way - 43. Plugin Layout With Pathogen

A New Hope: Plugin Layout with Pathogen vim 플러그인의 바닐라 레이아웃은 새로운 파일을 추가하여 사용하는 데에는 문제가 없지만, 다른 사람이 쓴 플러그인을 사용할 떄에는 문제가 된다. 과거에는, 다른 사람이 작성한 플러그인을 사용하기 위해서는 이를 다운로드 받아 하나씩 맞는 디렉토리에 넣어주어야 했다. 이 접근법은 몇 가지 문제점을 갖는다. 플러그인을 업데이트 하고 싶은 경우: 오래된 파일을 업데이트하면 되지만 만약에 저자가 파일을 삭제할 경우에는? 두 플러그인이 같은 이름의 파일을 가지고 있는다면? (utils.vim같이 자주 쓰이는 이름) 이를 다시 이름붙이면 되기는 하지만 autoload/나 다른 디렉토리 등 이름이 영향을 미치는 경우에는? 이를 쉽게 만들기 위해서..

tools/vim 2020.04.23

Learn Vimscript The Hard Way - 42. Plugin Layout in the Dark Ages

Plugin Layout in the Dark Ages 가장 먼저 다룰 내용은 어떻게 플러그인 구조를 구성하느냐이다. 과거에는 상당히 난잡하게 되어있었지만 지금은 여러 툴이 생겨 훨씬 자연스럽게 설치 가능하다. Basic Layout Vanila vim은 플러그인을 여러 개의 파일로 나누는 것을 지원한다. ~/.vim 하위에 많은 디렉토리가 있을 것이다. 시작하기 전에 먼저 용어부터 정리해보자. "plugin"이라는 단어를 "연관된 것들에 대한 많은 vimscript 덩어리"로 사용할 것이다. vim은 "plugin"에 대해 더 구체적으로 ~/.vim/plugin/에 있는 파일을 의미하는 용어로 사용한다. 많은 경우에는 첫 번 째 정의로 사용할 것이다. ~/.vim/colors ~/.vim/colors에..

tools/vim 2020.04.22

Learn Vimscript The Hard Way - 41. Creating a Full Plugin

Creating a Full Plugin 지난 40장동안 많은 기반 지식을 다루었다. 이 책의 마지막 파트에서는 배운 프로그래밍 언어로 vim plugin을 직접 만들어볼 것이다. 여기에는 상당한 노력이 따른다. 여기서 멈추는 것도 괜찮다. 이미 ~/.vimrc 파일에 상당한 수준의 발전이 있었을것이고, 다른 사람들의 플러그인의 버그를 수정 할 수 있을 것이다. 만약 플러그인을 만들고자 하려면 시간을 할애할 준비를 해야 한다. 이 책의 나머지 장은 상당히 intense하고, 나머지 챕터를 공부했다는 가정 하에 진행될 것이다. Potion 우리가 만들 플러그인은 Potion 프로그래밍 언어를 지원하ㅏ는 플러그인이다. Potion은 _why the lucky stiff라는 사람이 만든 토이 프로젝트 언어로 ..

tools/vim 2020.04.21