vim 55

Learn Vimscript The Hard Way - 33. Case Study: Grep Operator, Part Two

Case Study: Grep Operator, Part Two 앞 장에서는 기본적인 해결책을 작성해 보았다. 이제는 그 명령어에 살을 붙여보자. 우리의 원래 목표는 "grep operator"를 만드는 것이다. 새로운 것들을 많이 다루어야 하겠지만, 우선 저번 장에서 했던 방식으로 진행해보자: 간단하게 시작해서 필요한 기능으로 바꾸기 이전 장에서 사용한 매핑 (g)을 동일하게 사용할 것이기 때문에 이전 장에서 ~/.vimrc에 추가한 매핑을 주석처리 해주자. vim 파일에서 주석은 줄 앞에 "를 추가하면 된다. " nnoremap g :silent execute "grep! -R " . shellescape(expand("")) . " .":copenoperator를 만드는 것은 여러 코멘드를 쉽게 작..

tools/vim 2020.04.12

Learn Vimscript The Hard Way - 32. Case Study: Grep Operator, Part One - 2/2

Case Study: Grep Operator, Part One 해당 장은 case study part one - 1/2에서 이어지는 글이다. Escaping Shell Command Arguments 앞 장에서 사용한 방법 (작은따옴표로 quoting하는 방법)에도 문제가 있다. 검색하려는 string에 작은따옴표가 포함된 경우이다. that's에 커서를 두고 매핑된 grep을 실행시켜보자. 만약 새로운 window라면 :nnoremap g :grep -R '' . 명령어로 매핑을 추가하고 예시를 진행해보자. that's 이를 해결하기 위해서 shellescape 함수를 사용할 수 있다. :help escape()와 :help shellescape()를 읽어서 어떻게 동작하..

tools/vim 2020.04.10

Learn Vimscript The Hard Way - 32. Case Study: Grep Operator, Part One - 1/2

Case Study: Grep Operator, Part One 해당 장은 꽤 많은 내용을 담고 있어서 두 장으로 나눠서 작성할 예정이다. (part one의 part one이다...) 이번 장에서는 꽤 복잡한 vimscript를 작성해 볼 것이다. 이전 장들에서 공부했던 내용도 있을 것이고, 새로 나오는 내용도 있을 것이다. 익숙하지 않은 명령어들이 나오면 :help를 잘 활용하자 Grep :grep을 한 번도 사용해 보지 않았다면 :help :grep과 :help :make를 읽어보길 바란다. quickfix-window를 사용해보지 않았다면 :help quickfix-window도 읽어보아라. (벌써부터 help text 읽을게 산더미...) 간결히 얘기해서: :grep ...은 외부의 grep 프..

tools/vim 2020.04.09

Learn The Vimscript The Hard Way - 31. Basic Regular Expressions

Basic Regular Expressions Vim은 기본적으로 텍스트 에디터이다. 즉, 당신의 vimscript 코드는 text를 처리하는데 많은 일을 할 것이라는 말이다. 다음 예시를 적어보자 (복붙) max = 10 print "Starting" for i in range(max): print "Counter:", i print "Done"위 예시는 파이썬 코드인데, regex를 연습할 예제이기 때문에 파이썬을 몰라도 상관 없다. 여기서는 기본적인 정규표현식을 알고 있다고 가정하고 설명한다. 혹시 정규표현식을 잘 모른다면 Learn Regex the Hard Way 책을 읽으라고 추천하고 있다. (learn regex the easy way도 참고할 만 하다) Highlighting 본격적으로 시..

tools/vim 2020.04.08

Learn Vimscript The Hard Way - 30. Execute Normal!

Execute Normal! 지금까지 우리는 vimscript에서 자주 쓰이는 execute 와 normal! 명령어에 대해서 알아보았다. 다음 명령어를 실행해보자. :execute "normal! gg/foo\dd"foo를 찾아서 해당 라인을 지워줄 것이다. 이전 장에서는 normal! 명령어를 사용해보았지만 special character를 인식하지 못해 작동이 안 되었다. execute와 normal! 명령어를 합치는 것으로 이 문제를 해결할 수 있다. :normal! /foo 명령어를 실행해도 검색이 안 되는 것을 볼 수 있다. execute는 명령어를 프로그래밍적으로(?) 빌드해 주기 때문에 필요한 escape 문법을 사용할 수 있다. 다음 명령어를 실행해보자. :execute "normal! ..

tools/vim 2020.04.07

Learn Vimscript The Hard Way - 29. Normal

Normal vimscript의 유용한 command 이외에도 매일 사용하는 vim 명령어들을 vimscript에서 사용할 수 없을까? 가능하다. 이번 장에서는 이전에 잠깐 다뤘던 normal을 더 자세하게 살펴볼 것이다. :normal Gnormal 모드에서 G를 누른 것과 마찬가지로 파일의 마지막 라인으로 이동한다. :normal ggdd가장 첫 번 째 라인으로 이동하여 (gg) 해당 줄을 제거한다. (dd) Avoiding Mappings G에 dd를 매핑시킨 뒤에 다시 normal 명령어를 실행시켜보자. :nnoremap G dd :normal Gvim은 dd를 대신 실행시킬 것이다. normal 커멘드는 매핑이 있다면 그것을 실행시켜준다. 누군가 normal 모드에 매핑을 해 놓았으면 그것을 알..

tools/vim 2020.04.06

Learn Vimscript The Hard Way - 28. Execute

Execute execute 명령어는 string을 vimscript의 명령어로 evaluate 할 때 쓰인다 :execute "echom 'Hello, world!'" Hello, world!vim은 echom 'Hello, world!'를 그대로 실행시킨다. 더 유용한 예시를 들어보자. 새로운 파일을 vim에서 열어보고, 해당 윈도우에서 :edit foo.txt를 열어 새로운 버퍼를 열어보자. $ vi bar.txt :edit foo.txt그리고 다음 코멘드를 실행해보자. :execute "rightbelow vsplit " . bufname("#")vim은 처음에 열었던 bar.txt를 vertical split 창으로 띄워줄 것이다. vim은 . 명령어를 통해 "rig..

tools/vim 2020.04.05

Learn Vimscript The Hardway - 27: String Functions

String Functions Vim에는 string을 다루는 수많은 빌트인 함수들이 있다. 여기에서는 그 중 가장 중요한 몇몇개만 다뤄볼 것. Length string의 length는 strlen으로 표현한다. string에서는 len도 동일하게 작동하는데 이후에 len에 대해서 다룰 예정 :echom strlen("foo") 3 :echom len("foo") 3Splitting 다음 split 예시를 따라해보자 (echom 대신에 echo를 사용한 이유는 list를 반환하기 때문. list도 책의 이후 장에서 다룰 예정이라고 한다.) :echo split("one tow three") ['one', 'two', 'three']기본으로 split의 separ..

tools/vim 2020.04.04

Learn Vimscript The Hard Way - 26. String

Strings vim은 에디터이기 때문에 string을 가장 많이 사용할 것이다. :echom "Hello"Concatenation 가장 흔한 strong 처리는 concat이다. :echom "Hello, " + "world"Hello, world를 기대했지만 0이 출력된다. vim의 + 연산자는 오직 숫자에서만 사용 가능하다. string 타입에 +를 사용하면 vim은 숫자로 변환하여 더하려고 시도한다. :echom "3 mice" + "2 cats"5가 출력되는 것을 볼 수 있다. string을 더하기 위해서는 .을 사용해야 한다. .은 vim에서 concatenate string이다. :echom "Hello, " . "world"vim은 필요한 경우 string으로 타입변환을 해준다. :echo..

tools/vim 2020.04.03