tools/vim 92

Learn Vimscript The Hard Way - 38. Toggling

Toggling 첫번째 장에서 vim에서 옵션을 세팅하는 방법을 다뤘었다. set someoption!으로 해당 옵션을 "toggle"할 수 있다. 이는 우리가 매핑을 만들때 더욱 잘 쓰인다. 다음 명령어를 실행시켜보자. :nnoremap N :setlocal number!이제 N으로 number 옵션을 키고 끌 수 있다. relativenumber 옵션이 활성화 된 경우에는 number가 꺼져도 relative number가 출력되므로 이를 끄고 테스트해보자. setlocal norelativenumber 토글 매핑을 만드는 것은 우리가 별개의 두 키를 매핑시키지 않아도 되기 때문에 아주 편리하다. Toggling Options 토글 옵션을 하나 만들어보자. 다음을 ~/.vimrc에 추가해보자. (~/..

tools/vim 2020.04.18

Learn Vimscript The Hard Way - 37. Dictionaries

Dictionaries vimscript의 마지막 변수 타입은 dictionary이다. vimscript의 dictionary는 python의 dict, Ruby의 hash, Javascript의 object와 비슷하다. dictionary는 중괄호 ({})로 만들어진다. 값은 여러가지 타입이 들어올 수 있지만, key는 string만이 들어올 수 있다. :echo {'a': 1, 100: 'foo'} {'a': 1, '100': 'foo'}vimscript가 100을 '100'으로 변환한 것을 볼 수 있다. 또한 vimscript는 Javascript와는 달리 딕셔너리 마지막에 trailing comma를 추가할 수 ..

tools/vim 2020.04.17

Learn Vimscript The Hard Way - 36. Looping

Looping 당신은 아마 프로그래밍 언어 책에서 35페이지만에 루프를 언급한 것에 놀랐을지도 모른다. vimscript는 텍스트에 특화된 여러 옵션을 제공해주기 때문에 loop가 다른 언어들만큼 필요하지는 않다. 하지만 언젠간 필요해질 수 있기 때문에 vim에서 지원하는 루프에 대해서 살펴볼 것 For Loops 첫 번째 루프는 for루프이다. Java, C나 Javascript를 사용했다면 조금 이상해 보이겠지만, 상당히 엘레강스한 방식으로 작동한다. python의 for 문과 거의 흡사하다 :let c = 0 :for i in [1, 2, 3, 4] : let c += i :endfor :echom c 10vimscript의 for 루프는 리스트(나 다음에 다룰 딕셔너리)를 순회한다. While L..

tools/vim 2020.04.16

Learn Vimscript The Hard Way - 35. List

Lists 우리는 많은 변수를 작업했지만, 아직 이를 합친 적은 없었다. vim은 두 가지 aggregate type을 지원하는데, 그 중 첫 째는 리스트이다. vimscript의 list는 순서가 있다. :echo ['foo', 3, 'bar'] ['foo', 3, 'bar']vim 리스트는 중첩도 가능하다. :echo ['foo', [3, 'bar']] ['foo', [3, 'bar']]Indexing vimscript 리스트는 파이썬같이 zero-indexed 방식 사용한다. 인덱싱 방식도 비슷하다. :echo [0, [1, 2]][1] [1, 2]파이썬처럼 뒤에서 인덱싱도 가능하다. ..

tools/vim 2020.04.15

Learn Vimscript The Hard Way - Grep Operator, Part Threee

Case Study: Grep Operator, Part Three 우리가 만든 "grep operator"는 잘 작동하지만, 두가지를 더 추가하여 vim 생태계에서 잘 사용되게 해보자 Saving Registers 이전에 만들었던 명령어 nnoremap g :set operatorfunc=GrepOperatorg@ vnoremap g :call GrepOperator(visualmode()) function! GrepOperator(type) if a:type ==# 'v' normal! `y" elseif a:type ==# 'char' normal! `[y`] else return endif silent execute "grep! -R " . shellescape(@@)..

tools/vim 2020.04.13

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

vim 자동완성의 끝판왕, coc.nvim

vim 자동완성: coc.nvim https://github.com/neoclide/coc.nvim Install " Use release branch (Recommend) Plug 'neoclide/coc.nvim', {'branch': 'release'} " Or build from source code by use yarn: https://yarnpkg.com Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'}만약 nodejs 가 설치되어 있지 않으면 설치해주자. curl -sL install-node.now.sh/lts | bashAdd exte..

tools/vim 2020.04.11

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