<Plug> 명령을 호출 한 후 작업 수행
다음 매핑을 사용하여 vim-slime 및 tmux를 사용하여 REPL에 코드를 보냅니다.
nmap <buffer> <S-CR> <Plug>SlimeLineSend
이 매핑을 호출 한 후 작업을 수행하려면 어떻게해야합니까? 예를 들어를 실행 j
한 후 한 줄 ( ) 아래로 이동하고 싶습니다 <Plug>SlimeLineSend
. 작동하지 않습니다.
nmap <buffer> <S-CR> <Plug>SlimeLineSend j
답변
이것은 거의 나를 위해 작동합니다.
nmap <buffer> <S-CR> <Plug>SlimeLineSendj
실제로 작동하지 않는 이유는 터미널 Vim이 실제로 <S-CR>
시퀀스를 단순과 다른 것으로 인식하지 않기 때문입니다. <CR>
따라서 <S-CR>
Vim을 누를 때마다 다음 줄로 이동하고 실제로 매핑을 트리거하지 않습니다. 다른 트리거를 사용하여 동일하게 수행하면 정상적으로 작동합니다.
nmap <buffer> <LocalLeader>s <Plug>SlimeLineSendj
매핑을 확장 할 때마다 Vim은 매핑과 일치하는 가장 긴 문자 시퀀스를 찾습니다. 이 경우 <Plug>SlimeLineSend
이는 작업을 트리거하는입니다. 은 j
Vim은 한 줄 아래로 이동하는 움직임이 명령을 사용할 수 있도록, 버퍼에 아직도있다.
(많은 플러그인 <Plug>
이 "command"부분 주위에 괄호 세트를 사용하여 매핑 을 생성 하므로 끝 부분이 명확 해집니다. 또한 다른 명령의 접두사 인 명령을 생성 할 수 있습니다. 예를 들어, emmet.vim은 <Plug>(emmet-toggle-comment)
, Command-T에는 <Plug>(CommandT)
등이 있습니다.)
이 답변을 기반으로 솔루션을 찾았습니다. https://stackoverflow.com/a/18547013/1706778
nmap <buffer> <S-CR> :execute "normal \<Plug>SlimeLineSend"<CR>j