tools/vim 92

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

Learn Vimscript The Hard Way - 25: Numbers

Numberes 이제 vimscript에서 사용가능한 변수 타입을 살펴볼 것이다. 우선은 numeric type Vimscript는 두가지 숫자 변수를 사용한다: Number와 Float Number: 32 bit signed integer. Integer라고 생각하면 될듯 Float: floating point number. 그냥 사용하는 float Number Formats Vim에서는 다양한 방식으로 Number를 사용 가능하다. 일단 가장 기본적인 방법 :echom 100:echom 0xff255가 출력되는데, 0x prefix를 사용하여서 hex notatoin을 사용할 수 있다. :echom 0108이 출력되는 것을 볼 수 있는데, 0을 prefix로 사용하면 8진법 숫자를 사용할 수 있다. ..

tools/vim 2020.04.02

지수 표기법 (Exponential notaion) feat. vim: e+01, e-01

Exponential notation - 지수 표기법 feat. vim 지수 표기법은 많은 10의배수가 사용될 경우 모두 표시하기 어렵기 때문에 지수(e)를 사용하여 표기를 하는 방식이다. 가장 쉽게 vim에서 지수 표기를 해보자(?) e+ 가장 쉽게 10만 (100,000)을 표시해보자. 10만은 1 * 10의 5승이기 때문에 e+5을 사용한다. (e+05으로 많이 사용하는것같다) :echo 1.0e+5100000.0이 출력된다. 뒤의 소숫점은 float이 출력되어 그런거니 무시해주면 된다. 보통은 1e+05으로도 사용하는데 vim에서는 1.0같이 소숫점을 필수로 써주지 않으면 에러가 발생한다. 그럼 이제 조금 더 어려운(?) 100,000,000 (1억)을 표시해보자. 10의 8승을 곱해주어야 하기 ..

tools/vim 2020.04.01

Learn Vimscript The Hard Way - 24: Functions Arguments

Functions Arguments Vimscript의 함수도 당연히 인자를 받을 수 있다. :function DisplayName(name) : echom "Hello! My name is:" : echom a:name :endfunction이제 인자로 함수를 실행시켜보자. :call DisplayName("Your Name")vim은 Hello! My name is:와 Your Name 두 줄을 출력할 것이다. 이름 앞에 a:를 사용하였는데, 이는 앞 챕터 Variable Scoping에서 보았던 Function argument scoping이다. 이를 사용하지 않으면 에러가 나는 것을 볼 수 있다. :function UnscopedDisplayName(name) : echom "Hello! My n..

tools/vim 2020.03.31

Learn Vimscript The Hard Way - 23: Functions

Functions vimscript에도 다른 많은 프로그래밍 언어처럼 함수가 있다. 일단 기본적인 사용법부터 알아보자. 다름 코멘드를 실행해보자. :function meow()meow() 함수가 만들어 질 것이라고 기대했지만, 아래와 같은 에러가 발생한다. E128: Function name must start with a capital or "s:": meow()Vimscript 함수는 scoping 되지 않았다면 반드시 대문자로 시작하여야 한다. 뒤에 나오는 것처럼 함수에 scope를 추가하더라도 대문자로 적기를 convention으로 권장하고 있다. :function Meow() : echom "Meow!" :endfunction이제 위에서 만든 Meow 함수를 호출해보자. :call Meow()M..

tools/vim 2020.03.30

Learn Vimscript The Hard Way - 22: Comparision

Comparisons 앞 장에서 배운 vimscript의 조건절은 비교가 없으면 그다지 유용하지 않을 것이다. :if 10 > 1 : echom "foo" :endif:if "foo" == "bar" : echom "one" :elseif "foo" == "foo" : echom "two" :endif위에서 본 예시처럼 타 프로그램이 언어와 동일하게 비교를 사용 가능하다. 몇 가지 특이한 점들이 아래에서 설명될 예정 Case Sensitivity 다음을 실행시켜보자. :set noignorecase :if "foo" == "FOO" : echom "vim is case insensitive" :elseif "foo" == "foo" : echom "vim is case sensitive" :endif당연..

tools/vim 2020.03.28