답변:
당신이해야 할 일은 일련의 명령에 특정 키의 imap을 만드는 것입니다.이 경우 명령은 일반 모드로 떨어지고 현재 단어를 삭제 한 다음 다시 삽입합니다.
:imap <C-d> <C-[>diwi
imap <C-d> <C-o>diw
방식으로 작동합니다. 또한 <Esc>는 거의 항상 실행 취소 지점을 만들지 않습니다.
일반 모드 :
daw : delete the word under the cursor
caw : delete the word under the cursor and put you in insert mode
da)
하고 ci)
있지만 이것을 생각하지 않았습니다!
.vimrc
다음 nmap <Leader>d daw
과 같이 파일 에 해당 아기를 매핑했습니다 . nmap <Leader>c caw
aw
객체 선택의 한 예 라고 언급 할 가치가 있습니다. 당신은 그들이 어떤 영향을보기 위해 시각적 모드에서 개체 선택을 시도 할 수 있습니다 : vimdoc.sourceforge.net/htmldoc/motion.html#object-select
난 그냥 생각 daw
daw - delete a word
a
명령 이라는 것을 알고 Append text after the cursor [count] times.
있지만 어떻게 daw
작동합니까?
d
는 당신이 '삭제'할 것을 지시합니다. 'a'는 일종의 매개 변수로, 삭제시 구분자가 포함되도록 지정합니다. 마지막으로 'w' parameter
는 word
유닛을 삭제하도록 지정합니다 .
dw
과 daw
?
dw
커서에서 단어 끝까지 daw
삭제되고 공백과 함께 전체 단어가 삭제됩니다. diw
주변의 공백을 건드리지 않고 전체 단어를 삭제합니다.
아래는 일반 모드에서 작동합니다. Dan Olson의 대답에 동의합니다. 대부분의 삭제에서 아마도 일반 모드에 있어야합니다. 자세한 내용은 아래를 참조하십시오.
커서가 단어 안에있는 경우 : 단어
diw
에서 삭제하려면 (공백 제외)
daw
단어 주위를 삭제하려면 (다음 단어 앞에 공백 포함)
커서가 단어의 시작 부분에 있으면을 누릅니다 dw
.
예를 들어 2w를 앞으로 이동하기 위해 2w와 같이 일반적인 이동 숫자를 추가하여 곱할 수 있으므로 d2w는 두 단어를 삭제합니다.
삽입 모드 ^ w
Vim에서 움직임에 hjkl을 사용하는 아이디어는 집에 손을 대는 것이 더 생산적이라는 것입니다. 단어의 끝에 ^ w는 단어를 빠르게 삭제하는 데 효과적입니다. 삽입 모드로 들어가면 텍스트를 입력하고 화살표 키를 사용하여 홈 행 철학에 어긋나는 단어 중간에 끝납니다.
당신은 일반 모드에있어 단어를 변경하려면 간단히 사용할 수 있습니다 c
보다는 (변경)을 d
원하는 경우 완전히 단어를 변경하고, 언론에하지 않고 모드를 삽입 다시 입력 (삭제) i
다시 얻을 수 타이핑하기.
당신은 좋아합니까?
dw
dw
하이픈이나 다른 문장 부호를지나 치면 삭제되지 않습니다.
삽입 모드에서 내장 방법을 사용 하는 것처럼 보이지는 않습니다 . 다른 답변 중 일부는 일반 모드에 적합하며 삽입 모드에서 기능을 추가하기 위해 사용자 지정 매핑을 만들 수 있다고 지적합니다.
솔직히 대부분의 삭제 작업은 보통 모드에서 수행해야합니다. ^ W는 알 필요가 없지만 정상 모드로 들어가서 더 강력한 삭제 명령을 내릴 수있는 esc보다 상황을 생각할 수 있는지 확실하지 않습니다.
Vim은 이런 식으로 다른 많은 편집기 (TextMate 포함)와 매우 다릅니다. 생산적으로 사용하는 경우 인서트 모드에서 많은 시간을 소비하지 않을 것입니다.
단어를 삭제하는 방법에는 여러 가지가 있으므로이를 설명하겠습니다.
편집한다고 가정 :
foo-bar quux
커서가 'bar'의 'a'에있는 동안 명령을 호출하십시오.
foo-bquux # dw: letters then spaces right of cursor
foo-quux # daw: letters on both sides of cursor then spaces on the right
foo- quux # diw: letters on both sides of cursor
foo-bquux # dW: non-whitespace then spaces right of cursor
quux # daW: non-whitespace on both sides of cursor then spaces on the right
quux # diW: non-whitespace on both sides of cursor
단어 삭제를 반복하려고 할 때 허용되는 대답이 실패합니다. 대신이 솔루션을 시도하십시오.
" delete current word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw
CTRL-BackSpace를 맵핑하고 정상 모드에서도 작동합니다.