사용자가 <cr>
(일반 모드와 삽입 모드 모두)을 누를 때 행마를 삽입하고 커서를 이동하는 일반적인 효과 인 <cr>
을 방해하지 않는 vimscript를 작성하려고합니다. (스마트 들여 쓰기 또는 다른 들여 쓰기 모드를 고려함).<cr>을 함수로 다시 매핑하면 함수에서 원래 <cr>을 어떻게 호출 할 수 있습니까?
제안 사항?
사용자가 <cr>
(일반 모드와 삽입 모드 모두)을 누를 때 행마를 삽입하고 커서를 이동하는 일반적인 효과 인 <cr>
을 방해하지 않는 vimscript를 작성하려고합니다. (스마트 들여 쓰기 또는 다른 들여 쓰기 모드를 고려함).<cr>을 함수로 다시 매핑하면 함수에서 원래 <cr>을 어떻게 호출 할 수 있습니까?
제안 사항?
시도합니다. 이 예상대로 작동합니다
function s:DoSomething()
echom "Inside DoSomething"
return "\<CR>"
" return "\n" also works "
endfunction
inoremap <expr> <CR> <SID>DoSomething()
" If DoSomething function cannot be executed inside a textlock: "
inoremap <CR> <C-o>:call <SID>DoSomething()<CR><CR>
참고 nore
, 그것은 <CR>
다시 교체되는 s:DoSomething
에 의해 반환 방지 할 수 있습니다.
매핑의 오른쪽 부분은 <cr>
으로 시작해야합니다. 이와 같이 :
:imap <cr> <cr>sometext
그런 다음 재귀 적으로 매핑을 트리거하지 않습니다.
출처 : http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial%28Part_1%29#Nested_.28recursive.29_maps
지도의 {우}가 {좌}로 시작하는 경우는, 다음은 반복적으로 대체되지 않습니다. 예를 들어, 다음 명령은 GQ에 대한 재귀지도를 작성하지 않습니다 : 당신은 그런 문제가 발생하지 않습니다 가능하고 *map
을 생략
:nmap gq gq