Vim 명령 매핑

Vim 명령 매핑

내 질문은 여러 부분으로 구성된 명령을 단일 키 조합에 매핑하는 것입니다.

내 .vimrc에는 다음 줄이 있습니다.

nnoremap <leader>ss :w\|:silent !execute_external_script > output_of_script.txt\|:redraw!<cr>

보시다시피, 키를 누르면 세 가지 명령을 실행하고 싶습니다 <leader>ss. 먼저 파일을 작성한 다음 외부 스크립트(단위 테스트 실행)를 실행합니다. 불행히도 내 터미널은 쉘 명령을 실행한 후에 Vim을 다시 그리지 않습니다. 그래서 명령을 추가하려고 시도했는데 :redraw!명령이 Vim이 아닌 셸로 전달되는 것 같습니다. 다음 오류가 발생하기 때문입니다.

bash: :redrawecho: command not found.

스크립트가 셸에서 실행된 다음 Vim에서 다시 그려지도록 명령을 작성하려면 어떻게 해야 하나요? (또한 보너스로 누군가 그것이 무엇 <cr>인지 설명해 줄 수 있습니까?)

답변1

예, 이 :!명령은 명령줄의 나머지 부분을 인수로 사용합니다. 다른 Vim 명령을 연결하려면 명령을 다음으로 래핑하면 됩니다 :execute.

nnoremap <leader>ss :w\|:silent execute '!execute_external_script > output_of_script.txt'\|:redraw!<cr>

또는 ;로 구분하여 여러 명령줄을 실행할 수도 있습니다 <CR>. 결국 매핑은 고정된 매크로일 뿐입니다.

nnoremap <leader>ss :w\|:silent !execute_external_script > output_of_script.txt<cr>:redraw!<cr>

또한 참고: \|일반적인 접근 방식은 <Bar>명령 구분 기호를 이스케이프 처리하는 대신 특수 키코드를 사용하는 것입니다. 전체 목록을 참조 하세요 :help keycodes.<CR>입력하다.

관련 정보