tools/vim

Learn Vimscript The Hardway - 27: String Functions

seul chan 2020. 4. 4. 01:55

String Functions

Vim에는 string을 다루는 수많은 빌트인 함수들이 있다. 여기에서는 그 중 가장 중요한 몇몇개만 다뤄볼 것.

Length

string의 length는 strlen으로 표현한다. string에서는 len도 동일하게 작동하는데 이후에 len에 대해서 다룰 예정

:echom strlen("foo")
3

:echom len("foo")
3

Splitting

다음 split 예시를 따라해보자 (echom 대신에 echo를 사용한 이유는 list를 반환하기 때문. list도 책의 이후 장에서 다룰 예정이라고 한다.)

:echo split("one tow three")
['one', 'two', 'three']

기본으로 split의 separator로 "whitespce"를 사용하고 지정하는 것도 가능하다.

:echo split("one,two,three", ",")
['one', 'two', 'three']

Joining

split 뿐만 아니라 string을 합치는 것도 가능. (리스트 문법은 지금은 신경쓰지 말자)

:echo join(["foo", "bar"], "...")
foo...bar

splitjoin은 함께 사용하기 좋다

:echo join(split("foo bar"), ";")
foo;bar

Lowerand Upeer Case

:echom tolower("Foo")
foo

:echom toupper("Foo")
FOO

파이썬 등 대부분의 언어에서는 case-insensitive 비교를 하기 위해 string을 소문자로 바꾸는 일이 일반적이다. 하지만 vim에서는 case-insensitive 비교 연산자가 있기 때문에 그럴 필요가 없다. (관련 내용은 Comparisons 포스트 참고)

Exercise

  • Run :echo split('1 2') and :echo split('1,,,2', ','). Do they behave the same?
:echo split('1 2')
['1', '2']

:echo split('1,,,2', ',')
['1', '', '', '2']
  • Read :help split().

  • Read :help join().

  • Read :help functions and skim the list of built-in functions for ones that mention the word "String". Use the / command to make it easier (remember, Vim's help files can be navigated like any other kind of file). There are a lot of functions here, so don't feel like you need to read the documentation for every single one. Just try to get an idea of what's available if you need it in the future.