Vim 스크립팅 "no string under cursor" "E348 커서 밑에 문자열이 없습니다."

yeonpil_net의 이미지


com! -nargs=+ MyFunc call MyFunction()
nmap :MyFunc
map
fun! MyFunction (keyword)
~~~~
~~~~
endfun

----------------------------------------------------------------
위와 같이 코드 중간에 f9를 누르면, 커서 밑의 문자열이 함수의 인자가 되어 실행되도록 하는데..
문자열이 있는 곳에서 F9를 누를 때는 함수로 정상적으로 인자가 전달되는데..

커서 밑에 문자열이 없는 순간에도 함수 자체는 진입해서 인자가 없다면 없는 대로 동작이 되도록 하고 싶은데...
"E348 커서 밑에 문자열이 없습니다."
라며 함수 진입이 안됩니다...

간단하게 기능좀 만드려 하는데..

조언좀 부탁드립니다. vim help문서는 도통 알아먹기 힘드네요..ㅠ.ㅠ

yeonpil_net의 이미지

com! -nargs=+ MyFunc call MyFunction(<q-args>)
 
nmap :MyFunc <F9> :MyFunc <c-r><c-w><cr>
fun! MyFunction (keyword)
~~~~
~~~~
endfun

!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.

yeonpil_net의 이미지

-nargs=+ 는 무조건 있어야 하는 의미군요.
 
:help nargs 
하니..
        -nargs=0    No arguments are allowed (the default)
        -nargs=1    Exactly one argument is require, it includes spaces
        -nargs=*    Any number of arguments are allowed (0, 1, or many),
                    separated by white space
        -nargs=?    0 or 1 arguments are allowed
        -nargs=+    Arguments must be supplied, but any number are allowed

!23456---1----+----2----+----3----+----4----+----5----+----6----+----7-2--+----8
"배웠다"는 "할 수 있다"의 동의어가 아니다.