2017-11-19 20 views
0

Vim에 관해 하나의 질문이 있습니다. 나는지도가 지금까지 평등 한 명령으로 이해했다. 여기에 문제가 있습니다. imap <c-o> <esc>o을 내 .vimrc 파일에 넣으면 새 줄을 시작할 수 있습니다. 그 이유는 단지 <CR>지도가 아니기 때문에 나는 esco 명령을 사용하여 대체 명령을 undo 줄 단위로 사용할 수 있다고 Drew Neil의 제안을 따랐다. 그러나 <c-o>을 사용하여 회선을 시작하면 undo 명령이 작동하지 않습니다. 이는 Vim이 모드를 전환하지 않음을 의미합니다. <esc>! 나는 Vim의 기능이나 버그가 있는지 여부를 모른다. 당신이 어떤면에서 나를 도우면 고마워 할 것입니다.실행 취소 시퀀스를 잃지 않고 삽입 모드에서 Vim 맵 esc 키를 사용 하시겠습니까?

+0

inoremap <c-o> <c-g>u<cr> 나는이 시도하고 날 위해 일했습니다 취소합니다. 당신은 당신의 vimrc에 다른 곳으로 다시 매핑 된'o'를 가지고 있습니까? 99 %는'imap' 대신에'inoremap'을 사용해야합니다. 전자는 기본 매핑을 사용하고 후자는 사용자 정의 매핑을 사용합니다. –

+0

안녕하세요 앤드류. 나는 당신의 제안을 따르고 실패했다 : 나는 당신이 내가 의미하는 바를 얻지 못할지도 모른다라고 생각한다. '실행 취소'는 실제로 나를 위해 일한다. 나는 선을 쓰고, 새로운 선을 시작하고, 끝내고, 새로운 선을 다시 시작한다. . 그리고 일반 모드로 전환 '명령 취소'명령을 누르면 Vim은 한 줄 대신 입력 모드로 입력 한 모든 줄을 지 웁니다. (''을 누르면 모드 전환이 발생합니다.) –

+0

오호, 이제 알았습니다. , 나는 희망한다.) 대답으로 해결책을 주었다. –

답변

0

inoremap <c-o> <c-g>u<esc>o을 사용하여 원하는 동작을 얻을 수 있습니다. <c-g>u은 현재 실행 취소 시퀀스를 중단합니다 (:h i_CTRL-G_u 참조).

실제로 삽입물 매핑에 <esc>이있는 것이 실행 취소 시퀀스를 위반 한 것으로 간주되지 않는 이유는 생각하지 않았습니다. 이렇게하면 SO 대답 위험한 이유 그러나 나는 확실히 이론화 수있다, 그래서 추가

편집을 :)되지 않습니다 간단한은 다음과 같습니다

+0

고마워요. –

+0

@ShawnXu np! 그러면 대답을 받아들이시겠습니까? –