VI에서 커서에서 줄 끝까지 삭제


301

내가 읽은 모든 VI 문서에서 이것을 백만 번 살펴 보았지만 커서에서 줄 끝 명령까지 삭제를 찾을 수없는 것 같습니다.


3
여기에 오타가 있습니다. 제목에 "end of line"이라고 말하고 질문에 "end of word"라고 말합니다.
Cascabel

답변:


449

이 명령 dw은 현재 커서 위치에서 다음 단어 문자의 시작 부분까지 삭제합니다. 명령 d$( 'S'가 아닌 달러 기호)은 현재 커서 위치에서 현재 행의 끝까지 삭제됩니다. D의 동의어입니다 d$.


dw, 알고 있지만 "이 줄의 나머지 부분을 삭제하십시오"명령이 있다고 가정했습니다. 예를 들어 내 라인이 ip=|10.1.1.1함께 |커서 위치 인. 모든 10.1.1.1?를 삭제하는 명령이 있습니까?
Falmarri

3
@Falmarri-죄송합니다. 귀하의 질문을 오해했을 것입니다. 이에 대한 명령이 있습니다 :d$
Tok

84
D (Shift + d)는 d $의 동의어입니다.
Neth

5
@Andy, 커서에서 줄 끝까지 삭제하는 작업입니다. 그보다 더 많은 것을 삭제 하여 "작업을 수행"하는 것을 고려한다면 , :!rm -f %그리고 나서를 사용할 수도 있습니다 :q!. 전체 파일이 삭제됩니다.
와일드 카드

2
@Amir 그냥 d^( 'd'+ caret) ... 기본적으로 d + 내가 생각하는 커서를 움직일 문자를 사용하지만 Vim을 배우고 있기 때문에 잘못 생각할 수 있습니다.
JakeD

41

다른 사람들이 언급했듯이 : d$또는 D( shift- d)를 사용하여 줄 끝까지 커서 위치에서 삭제할 수 있습니다 .

내가 일반적으로 더 유용한 것은 c$또는 C( shift- c)는 라인이 끝날 때까지 커서 위치에서 삭제하기 때문에 하고 [삽입] 모드에 넣을.


2
좋은!!! 이것은보다 훨씬 더 D그 다음 줄의 끝에서 다시 공간을 이동하지 않는 한, 내 의견으로는, 대부분의 사람들.
Elijah Lynn

왜이 답변이 여기까지 숨겨져 있습니까? 이것이 제가 이곳에 왔을 때 제가 찾고 있던 기능입니다.
M_M

@ElijahLynn 그것은 어쨌든 문제가되어서는 안됩니다. 빔은 삽입 모드를 입력하는 두 가지 방법이 i커서 전에 삽입하고 a있는 커서 후 삽입합니다. 커서가 줄의 끝에 있고 줄의 끝에 삽입하려면을 사용하면 a됩니다.
Lie Ryan

1
목표는 두 번이 아닌 한 번의 작업으로 수행하는 것입니다. 추가 키 스트로크 = 추가 마찰
엘리야 린

36

vi의 장점 중 하나는 논리적 명령 구조입니다. d동작 명령 뒤에 개발 그 동작의 대상 eletes. $줄의 끝으로 이동합니다 (니모닉 : 정규 표현식과 동일). 따라서 d$줄 끝까지 삭제합니다. 마찬가지로 e받는 이동 전자 현재 단어의 ND 및 w다음의 처음으로 이동 w ORD; 따라서 de현재 단어의 끝을 dw삭제하고 다음 공백을 추가로 삭제합니다.


1
@gioele <kbd>명령 시퀀스가 ​​아닌 실제 키에 사용 합니다. 예 <kbd>Ctrl</kbd>+<kbd>C</kbd>를 들어 d$.
Gilles

@ 길 당신이 맞아요. 방금 d ^를 시도했는데 커서 위치에서 줄 시작으로 삭제되었습니다.
ka3ak

나는 항상 단어를 삭제하기 위해 (d) elete (a) (w) ord를 사용했습니다 :)
Błażej Michalik

20

아마도 D를 사용하고 싶을 것입니다. 커서를 삭제하려는 첫 번째 문자로 이동 한 다음 shift-D를 누르십시오. 모든 것이 사라졌습니다. 실제로 기본 컷 버퍼에 있으므로 P 또는 p를 다시 붙여 넣을 수 있습니다.

Dp (줄 끝까지 삭제 한 다음 다시 넣으십시오)를 사용하고 다른 줄의 끝으로 이동 한 다음 p를 다시 사용 하여이 다른 줄의 끝에 동일한 텍스트를 붙여 넣습니다. 복잡한 URL을 두 개 이상의 장소에 배치 해야하는 구성 파일에서 궁금합니다.


어쨌든 그가 사용하는 최소한의 Vim 일 것입니다.
polemon

0

삽입 모드 바로 가기가 유용 할 수 있다고 생각합니다.

삽입 모드에서 줄 끝까지 변경을 시작하는 것이 좋습니다 ( ~/.vimrc).

inoremap <C-l> <C-o>C

이미 말했듯 D이 일반 모드와 Ctrl+ + l삽입 모드입니다. 보시다시피 C줄 끝까지 변경되기 시작합니다.

<C-o> ......... insert normal keystroke in insert mode

내가 선택한 Ctrl- l때문에 l손가락을 받고있다. 는 Ctrl- k이미 이중 음자를 삽입하는 데 사용됩니다.

:h i_Ctrl무료 키 바인딩을 검색해 왔으며 vim에서 작업을 수행하는 새로운 바로 가기를 만드는 데 실제로 더 큰 문제입니다.


0

커서 위치 다음부터 행 범위를 삭제하려면 3D다음 두 행뿐만 아니라 행 끝까지 커서에서 삭제합니다 (즉, 커서 위치 다음에 3 행 삭제).

예를 들어 다음 텍스트 (로 표시된 커서 |)의 경우

If there's a cursor |in the line
here
we
go

명령 3D을 사용하면 다음 이 출력됩니다.

If there's a cursor
go
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.