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은
.
명령어를 통해"rightbelow vsplit "
과bufname("#")
의 결과로 나온 string을 합쳐준다. bufname("#")
은 바로 직전의 buffer 이름인bar.txt
를 반환하여"rightbelow vsplit bar.txt"
가 된다.execute
명령어는 이를 실행시킨다.
Is Execute Dangerous?
대부분의 프로그래밍 언어에서도 eval
과 같은 string 실행 함수가 존재한다. 대부분은 이를 사용하는 것을 지양하는데, vimscript에서는 적용되지 않는다.
첫째, 대부분의 vimscript는 input을 사용자에게서만 받는다. 만약 사용자가 execute
를 이상한 방법으로 사용한다고 하더라도 해당 사용자의 컴퓨터에서만 이상하게 동작할 것이다.
두번째 이유는 vimscript는 다른 이상하고 교활한 문법이 많기 때문에 (ㅋㅋㅋ) 상대적으로 쉬운 execute
는 직관적인 방법이기 때문이다.
Exercises
Skim :help execute to get an idea of some of the things you can and can't use execute for. Don't dive too deeply yet -- we're going to revisit it very soon.
Read :help leftabove, :help rightbelow, :help :split, and :help :vsplit (notice the extra colon in the last two topics).
leftabove
: 명령어를 실행해서 window를 split 해야하면 vertical split일 경우 왼쪽, 수직 분할일 때에는 위쪽에 표시rightbelow
는 반대split
: 수평 분할 (:[N]sp[lit] [++opt] [+cmd] [file]
)vsplit
: 수직 분할(:[N]vs[plit] [++opt] [+cmd] [file]
)
Add a mapping to your ~/.vimrc file that opens the previous buffer in a split of your choosing (vertical/horizontal, above/below/left/right).
nnoremap <Leader>vs :execute "rightbelow vsplit " . bufname("#")<CR>
'tools > vim' 카테고리의 다른 글
Learn Vimscript The Hard Way - 30. Execute Normal! (0) | 2020.04.07 |
---|---|
Learn Vimscript The Hard Way - 29. Normal (0) | 2020.04.06 |
Learn Vimscript The Hardway - 27: String Functions (0) | 2020.04.04 |
Learn Vimscript The Hard Way - 26. String (0) | 2020.04.03 |
Learn Vimscript The Hard Way - 25: Numbers (0) | 2020.04.02 |