vim 55

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

Learn Vimscript The Hard Way - 40. Paths

Paths vim은 텍스트 에디터이고, 텍스트 에디터는 (보통) 텍스트 파일로 작동한다. 텍스트 파일은 filesystem에 존재하고, 어떤 경로에 특정한 파일이 존재한다. vimscript는 경로에 대해 작업할 떄 사용하는 특별한 빌트인 함수들을 가지고 있다. Absolute Paths 외부 스크립트에서 해당 파일의 절대 경로를 알게 되면 유용한 경우가 있다. :echom expand('%') :echom expand('%:p') :echom fnamemodify('foo.txt', ':p')첫 번 째 명령어는 현재 수정중인 파일의 상대경로를 보여준다. %는 "현재 파일"을 의미한다. 두 번 째 명령어는 절대 경로를 보여준다. :p는 vim에서 ..

tools/vim 2020.04.20

Learn Vimscript The Hard Way - 39. Functional Programming

Functional Programming 잠시 휴식을 갖고 프로그래밍 스타일에 대해 이야기하는 시간을 가져볼 것이다. functional programming에 대해 들어본 적이 있을 것이다. 만약 당신이 Python, Ruby, Javascript, 특히 Lisp, Scheme, Clojure, Haskell 등의 프로그래밍 언어를 사용해 보았다면 이 방식에 아주 익숙할 것이다. vimscript는 kind-of-functional 스타일이 필요한데, 조금은 구식이다. 이를 조금 덜 고통스럽게 하기 위한 몇몇 헬퍼를 만들 수 있다. functional.vim을 만들어보자. 다음 장에서는 해당 파일을 이용하여 예시를 작성할 것이다. Immutable Data Structures 불행히도 vim에는 Clo..

tools/vim 2020.04.19

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

karabiner element ESC 입력시 자동 영문 변환하기

~/.config/karabiner/assets/complex_modifications/에 .json 파일 생성 해당 파일에 룰 추가: https://pqrs.org/osx/karabiner/json.html#complex_modifications-data-structure 에 룰 설명 되어있음 Karabiner-Elements preference -> Complex Modifications -> Add rule 하여 해당 rule enabled { "title": "Convert to en when ESC", "rules": [ { "description":"Convert to en when ESC", "manipulators": [ { "type": "basic", "from": { "key_code..

tools/mac 2020.04.14