Conditional
Vimscript에서는 if
문을 통해 조건절을 사용한다.
Multiple-Line Statements
Vimscript에서 한 줄로 코드를 처리하기 힘든 경우에는 여러 줄 로 쓸 수도 있지만, pipe character (|
)를 사용할 수도 있다.
:echom "foo" | echom "bar"
책의 나머지 부분에서 예시 코드를 실행할 때 newline을 사용하기 싫은 경우 pipeline을 사용해서 작성이 가능하다.
Basic If
:if 1
: echom "ONE"
:endif
integer 1
을 true
로 인식하여 ONE
이 반환된다.
:if 0
: echom "ONE"
:endif
0
도 대부분의 프로그래밍 언어와 비슷하게 false
로 인식.
특이한 점은 string을 true
로 인식하지 않는다는 점이다.
:if "something"
: echom "INDEED"
:endif
위 예시에서는 아무것도 표시되지 않는다.
더 이상한 점은 string으로 된 숫자는 true
로 인식한다 (ㄷㄷ..)
:if "9024"
: echom "WHAT?!"
:endif
WHAT?!
을 반환하는 것을 볼 수 있다. 이를 이해하기 위해 아래 코드를 실행시켜보자.
:echom "hello" + 10
:echom "10hello" + 10
:echom "hello10" + 10
차례대로 10
, 20
, 10
이 나온다.(!) 이를 통해 알 수 있는 점은 아래와 같다.
- vim은 필요하다면 변수를 강제로 변환시킨다.
10 + "20foo"
에서 vim은"20foo"
를 숫자로 변환 (20)시켜 10과 더해 30을 반환시킨다. - 숫자로 시작되는 string만 숫자로 변환되고 나머지는
0
으로 변환된다. - 조건절의 강제 변환과 계산을 완료하여 0이 아닌 숫자가 나오면
if
문을 실행시키게 된다.
Else and Elseif
Vimscript는 Python과 비슷하게 else
와 elseif
를 제공한다.
:if 0
: echom "if"
:elseif "nope!"
: echom "elseif"
:else
: echom "finally!"
:endif
Exercises
- Drink a beer to console yourself about Vim's coercion of strings to integers. (ㅋㅋㅋ)
'tools > vim' 카테고리의 다른 글
Learn Vimscript The Hard Way - 23: Functions (0) | 2020.03.30 |
---|---|
Learn Vimscript The Hard Way - 22: Comparision (0) | 2020.03.28 |
Learn Vimscript The Hard Way - 20. Variable Scoping (0) | 2020.03.25 |
Learn vimscript the hard way - 19장. Variables (0) | 2020.03.24 |
Learn vimscript the hard way: 18장 - Responsible Coding (0) | 2020.03.20 |