답변:
어때요?
inoremap <C-\> <C-o>:left 0<Cr><BS>
<C-o>
일반 모드 명령 ( :left 0
) 을 실행하면 들여 쓰기가 모두 제거되고 커서가 줄의 시작 부분에 놓입니다. <BS>
마지막 줄로 돌아갑니다.
이것은 "뒤로 J
" 와 조금 같습니다 .
불행히도 Shift + Enter 또는 Ctrl + Enter를 매핑하는 것은 불가능한 것 같아서 <C-\>
"입력 근처"인 것으로 선택합니다 .
<C-u>
대신에 사용 하지 <C-o>:left 0<CR>
않습니까?
J
"그래서이 foo<CR>bar<C-\>
당신을 떠날 것이다 foobar
. IMHO 더 유용하지만 YMMV입니다.
foo<CR>bar<C-u>
하면 foo<CR>
(+ Vim이 추가 한 자동 들여 쓰기). <C-o>:left 0<CR>
커서 위치에 관계없이 항상 동일하게 작동합니다.
나는 내 안에 이것을 가지고 있으며 vimrc
, 두 번째 부분은 관련이 있습니다.
inoremap <expr> <silent> <cr> pumvisible() ? "<c-y>" : "<c-g>u<cr>"
이것이하는 일 : Enter
삽입 모드에 도달 할 때마다 "실행 취소 시퀀스를 깨고 새로운 변경을 시작합니다"(참조 h: i_CTRL-G_u
). 즉, Enter
실수로 쳤다면 Statox가 제안한대로 또는로 삽입 된 이전 줄을 제거하지 않고 변경을 취소 할 수 있습니다 . 기본적으로 각 줄은 개별적으로 취소 할 수 있습니다.ESC u a
Ctrl-o u
편집 / 업데이트 : Emacs, 즉 evil-mode 에서 Vim 에뮬레이션을 사용 하는 경우 비슷한 효과를 위해이 패키지 를 사용할 수 있습니다 .
<c-y>
팝업 메뉴 와의 관계가 궁금 합니다.
"<c-g>u<cr>"
로 대체 할 것입니다 &paste ? "<cr>" : "<c-g>u<cr>"
. 그렇지 않으면 다음에 실수로 200 줄의 HTML을 붙여 넣을 때 실행 취소하는 것이 재미있을 것입니다. :)
paste
삽입 모드 매핑이 비활성화됩니다 (Vim의 도움에 따라)
backspace
옵션 설정 방법에 따라 작동하지 않을 수 있기 때문에이 솔루션을 더 좋아합니다 .
내가하는 방법은 Ctrl-wBackspace입니다.
Ctrl-w마지막 단어를 삭제하려면 (이것이 표준 vim인지 잊었는지 잊어 버렸습니다.) 단지 공백이므로 줄의 처음으로 돌아갑니다. 그런 다음 Backspace내가 있던 이전 줄로 다시 돌아갑니다.
Ctrl-w
인서트 모드에서 의 사용에 대해 몰랐다 . 그러나 Carpetsmoker ♦는 여전히 더 빠릅니다. 따라서`Ctrl- \`의 기본 바인딩은 그렇게 유용하지 않습니다.
:help i_CTRL-W
. 그리고 그것을 두 번 누르면 트릭을하는 것처럼 보입니다.
<C-u>
는 새 줄에 모든 문자를 삭제로 더 유용 할 수있다
이 방법은 (삽입 모드에서) UpCtrl-oJDel입니다. 아마도 가장 효율적인 조합은 아니지만 생각할 필요없이 내가하고있는 일입니다.
ctrl+w
두 번 작동하고 꽤 쉬운 것 같습니다