2013-07-15 2 views
3
noremap <C-S> :update<CR>  
vnoremap <C-S> <ESC>:update<CR> 
inoremap <C-S> <ESC>:update<CR> 

작동하는 키 시퀀스를 매핑이 내가 Vim은 버퍼를 저장하여 Ctrl 키 + S에 응답 얻기 위해 설정 한 바인딩이 있습니다. 저는 이것을 사용하지는 않지만, 짧은 시간 동안 이유를 켜거나 끄거나 다른 편집자와 상호 작용할 때가 종종 있습니다. 우리는 때때로이를 참 아야하며, 변경 사항을 커밋 할 때 단 하나의 바인딩 만 제공합니다.빔 : 명령 줄 모드

noremap! <C-S> <ESC>:update<CR> 
:

어쨌든, 이러한 빔은 커맨드 라인 모드에있을 때와 같은 시간, I이 같은 결합을 사용하는 경우에도, 가압시 Ctrl 키 + S가 실패 (: 명령 또는 / 검색 입력) 존재

기본적으로 명령 입력을 종료합니다 (심지어는 <ESC>을 바인드 할 때도 원하지 않는 명령이나 검색을 전송 함)! :update을 실행하지 못합니다.

Vim을 명령 줄 모드로두고도 바인딩을 계속 사용하려면 어떻게해야합니까?

답변

3

해결책은 Ctrl+C을 사용하여 입력 한 내용을 강제로 취소하는 것입니다. 성공적으로 다음 :update 문제가 발생합니다.

cnoremap <C-S> <C-C>:update<CR> 

경고의 말씀 : 당신은 Ctrl 키 + S 이후 꺼 다음이다 일시적 키 수신을 중단하게하는 "XOFF"신호를 (전송하지 않도록하기 위해 터미널/쉘 설정을 구성해야합니다 Ctrl + Q). 이는 쉘 또는 터미널 클라이언트에서 구성하는 것으로 충분할 수있는 일회성 구성입니다.

+1

'의 stty -ixon' 난에 그 라인을 가지고, 실제로 흐름 제어 –

+0

을 끕니다 내'~/.zshrc' –

+0

@Steven 루 답변 주셔서 감사합니다, 그것은 많은 도움이 않습니다. – whitesiroi