vimscript 45

Learn Vimscript The Hard Way 후기/리뷰(review)

Learn vimscript the hard way를 읽은 뒤의 후기 개발을 처음 시작하였을 때 부터 vim을 사용하기 시작하였지만 "Practical Vim", "Pro vim" 등 몇몇 책을 보거나 vimgolf, vim-adventure (vim을 하는 게임)을 해보기는 했지만 vim을 제대로 공부해본 적은 없었다. 그러다 보니 항상 사용하는 명령어만 사용하거나 모르는 것이 생기면 그때 그때 찾아서 사용하는 정도였다. 그러던 중 회사에서 Google BigQuery를 도입하는 일이 생겼다. 기존에는 postgres를 사용하여기 때문에 postgres client로 터미널 환경에서 쿼리를 날리기가 쉬웠지만, BigQuery는 무조건 웹 콘솔을 사용해야 하는 문제가 있었다. DBeaver, Datagr..

tools/vim 2020.05.24

Learn Vimscript The Hard Way - 56. What Now?

What Now? 여기까지 모든 예시와 exercise를 풀었다면 이제 꽤 기본적인 vimscript를 알게 되었을 것이다. 아직 배울 게 많으니 걱정하지 마라 (?) 더 공부하고 싶은 사람들을 위한 몇몇 토픽을 소개한다. Color Schemes 이 책의 앞 장에서 우리는 Potion 파일에 대한 syntax highlighting을 추가하였다. syntax highlighting의 짝은 각 syntax가 어떤 색깔이 될 것인지에 대한 custom color scheme을 만드는 것이다. vim의 color scheme 꽤 직관적이고, 약간은 반복적이다. :help highlight를 읽어보자. 몇몇 built-in coloer scheme을 보고 구조가 어떤지 확인할 수 있을 것이다. 도전할 것을 찾..

tools/vim 2020.05.12

Learn Vimscript The Hard Way - 55. Distribution

distribution 이제 당신은 다른 많은 사람들이 유용하다고 생각갈 만한 빔 플러그인을 만들 수 있는 vimscript skill을 익혔다. 이 챕터는 그 플러그인을 어떻게 올려 다른 사람들이 쉽게 사용할 수 있게 할지에 관해 다룰 것이다. Hosting 가장 먼저 할 일은 플러그인을 온라인에 올려 사람들이 다운로드 할 수 있게 하는 것이다. vim plugin이 사는 canonical place는 vim 웹사이틔의 scritp secion이다 웹사이트를 위해서는 계정이 필요하다. 이는 아주 간단하다. 최근 몇 년 간 플러그인을 배포하는 트렌드는 Bitbucket이나 Github같은 퍼블릭 레파지토리에 배포하는 것이다. 이른 방식이 유행이 된 데에는 두가지 이유가 있다. 먼저 pathogen같은 플..

tools/vim 2020.05.11

Learn Vimscript The Hard Way - 54. Documentation

Documentation 우리의 포션 플러그인은 이제 많은 기능들로 가득 차 있지만, 이를 document화 시키지 많으면 사람들이 사용하지 못하기 때문에 쓸모가 없을 것이다. vim의 자체 documentation 기능은 아주 강력하다. 이는 아주 장황하지 않고, 철두철미하다. 또한 플러그인 저자로 하여금 document를 작성할 수 있게 영감을 주어 vimscript 커뮤니티에 강력한 documentation culture를 이뤄내었다. How Documentation Works vim에서 :help를 읽으면 몇몇 항목들은 다르게 하이라이트 된 것을 볼 수 있을 것이다. 이것이 어떻게 작동하는지 살펴보자. 아무 help 토픽을 열고 (:help help와 같은) :set filtype?을 실행시켜보자..

tools/vim 2020.05.10

Learn Vimscript The Hard Way - 53. Autoloading

Autoloading 이제 우리는 우리의 Potion 플러그인에 꽤 많은 기능을 추가하였다. 마치기 전에 중요한 기능을 더 추가하여 더 빛나게 만들어보자. 먼저 우리는 autoloading 기능을 추가하여 플러그인을 더 효율적으로 만들어 볼 것이다. How Autoload Works 지금은 유저가 플러그인을 로드하면 (Potion 파일을 열면) 모든 기능이 한 번에 로드된다. 우리의 플러그인은 아직 작기 때문에 큰 문제가 되지 않지만, 큰 플러그인의 경우 모든 코드를 로드하는 데에는 꽤 많은 시간이 소요된다. vim은 "autoload"를 사용하여 이 문제를 해결한다. Autoload는 코드 로딩을 실제로 필요할 때로 지연시킨다. 전체적으로는 별로 큰 퍼포먼스 향상이 이뤄지지 않을 수 있지만, 사용자가 ..

tools/vim 2020.05.09

Learn Vimscript The Hard Way - 52. External Commands - part two

External Commands - part two 해당 장도 두 포스트로 나누어서 작성하였다. 1부를 읽고 읽기를 권장한다. Displaying Bytecode Potion 컴파일러는 컴파일 되었을 때 생성되는 bytecode를 볼 수 있게 해주는 옵션을 제공한다. 이는 아주 low-level에서 디버깅을 하기 쉬워진다. 쉘에서 다음 명령어를 실행해보자. $ potion -c -V factorial.pn -- parsed -- code ... -- compiled -- ; function definition: 0x109d6e9c8 ; 108 bytes ; () 3 registers .local factorial ; 0 .local print_line ; 1 .local print_factorial ; ..

tools/vim 2020.05.08

Learn Vimscript The Hard Way - 52. External Commands - part one

External Commands - part one 해당 장도 두 포스트로 나누어서 작성할 예정이다. Vim은 UNIX의 "do one thing well" 철학을 따른다. 에디터에 필요한 기능을 쑤셔넣는 대신에, vim은 적절한 외부 커맨드를 선정하여 일을 위임한다. Potion 컴파일러와 interaction을 만들어서 vim의 외부 커맨드에 발을 담궈보자. Compliling 우리는 먼저 현재 potion file을 컴파일하여 실행하는 명령어를 추가할 것이다. 아주 많은 방법이 있지만, 지금은 간단하게 외부 커맨드를 사용하도록 하자. potion/ftplugin/potion/running.vim을 플러그인 레파지토리에 만들자. 이는 potion 파일들의 compiling과 running과 관련된 매..

tools/vim 2020.05.07

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