2013-07-29 2 views
0

나는 이것에 간단한 대답이 될 것이라고 확신하지만 튜토리얼과 howtos의 정확한 부분은 아직 치지 않았습니다.vim 함수에 매개 변수 전달

나는 .vimrc에서 HTML 생성에 도움이되는 기능을 가지고있다. 그것은 주어진 이름의 태그에 선택된 텍스트를 감싸는 간단한 함수입니다. 현재 함수 서명은 다음과 같습니다 :

function! WrapInTag(tag) 

그리고는 다음과 같이 설정지도가 : tagname 문제입니다

vmap <Leader>tag <Esc>:call WrapInTag(tagname)<CR> 

것을. 텍스트 블록을 선택할 수 있도록 \tag b<CR>을 입력하고 b 태그로 둘러싸인 텍스트를 강조 표시하도록 구성하려면 어떻게해야합니까? 내가 찾지 못한 엄청나게 분명한 자습서 링크는 많은 도움이 될 것입니다.

편집 사실, 나는 텍스트를 선택하지 않고 나를 혼란스럽게하는 태그 이름을 검색하는 것이 사용자 상호 작용임을 지적합니다.

답변

3

이것은 함수에 인수를 전달하는 것과는 관계가 없지만 (예를 들어 이미 예제에서 보았습니다) 사용자와 상호 작용하는 방법, 즉 태그 이름과 선택한 텍스트를 가져 오는 방법입니다. 처음 들어

는 vim 스크립트는 로 인정 두 가지 기능, 텍스트의 단일 문자 getchar()input()를 입력을 제공합니다. 이런 식으로 뭔가 작업을해야합니다 :

vnoremap <Leader>tag <Esc>:call WrapInTag(nr2char(getchar()))<CR> 

(참고 : You should use :noremap를, 그것은 매핑과 재귀에 매핑 면역을 수 있습니다.)

텍스트 선택은 레지스터 '<'>에 저장됩니다. `` 이동 명령 (또는 cursor())을 사용하여 이동하거나 선택을 다시 선택하고 바꿉니다 (예 : cursor()). :normal! gvcNEW-TEXT.

여러분이 시작하게되기를 바랍니다. 훌륭한 도움말을 참조하고 vim.org에서 유사한 플러그인을 찾아서 어떻게 구현했는지 확인하는 것을 잊지 마십시오.

+0

input() 함수는 정확히 내가했던 것입니다. 감사합니다! 나는 그것을 작동 시켰고, 이제는 "vim을 배움"에서 관련 장을 다시 읽고 vimscript가 함께하는 자필의 모든 것들을 해결할 시간입니다. – chooban

2

함수를 삭제하고 surround을 설치하십시오.

+2

그가 교육적인 목적으로 노력한다면 그는 이보다 더 포괄적 인 대답을 할 자격이 있습니다. – user1146332

+0

나중에 확실히 서라운드를 북마크 하겠지만, 내가 더 효율적으로 할 수 있도록 내 선호하는 편집자에 대해 더 자세히 배우려고합니다. 그것으로. 적절한 함수 처리를 배우는 것이 좋은 방법 인 것 같습니다. – chooban

+0

전적으로 동의하지만 정력이 없기 때문에 현재로서는 좀 더 교육적인 답변을 드릴 수 없습니다. – romainl

관련 문제