역방향 트릭을 삭제하는 vim


119
  • 왼쪽에있는 단어를 어떻게 삭제합니까? 즉, 커서가 단어 끝에있을 때 단어를 삭제합니다.
  • 줄 시작 부분의 문자를 어떻게 삭제합니까?
  • 왼쪽의 첫 번째 공백을 어떻게 삭제합니까?

  • 단어 삭제와 관련된 다른 트릭이 있습니까?

답변:


163

일반적으로 d <모션>은 <모션> 이후 현재 위치에서 끝 위치까지 삭제됩니다. 이는 다음을 의미합니다.

  1. d <leftArrow>는 현재 및 왼쪽 문자를 삭제합니다.
  2. d $는 현재 위치에서 줄 끝까지 삭제합니다.
  3. d ^는 현재 뒤로 공백이 아닌 첫 번째 문자로 삭제합니다.
  4. d0은 현재에서 줄의 처음까지 뒤로 삭제합니다.
  5. dw는 현재 단어의 끝에서 현재 단어의 끝까지 삭제합니다 (후행 공백 포함).
  6. db는 현재 단어의 시작부터 현재를 삭제합니다.

'd'명령과 결합 할 수있는 모든 것을 배우려면 이것을 읽으십시오 .


2
db기억하기 어려운 경우를위한 또 다른 편리한 단축키 : 5. dw or d<ctrl+rightarrow>그리고 6. db or d<ctrl+leftarrow>
Crisboot

7
오히려 입력보다 d<leftArrow>할 수 dh있기 때문에, 대신 h이동의 키가 왼쪽
Dylanthepiguy

4
이 답변이 허용되는 이유는 무엇입니까? d <leftArrow> (그리고 dw를 제외하고 아래에 속하지 않음)는 OP가 원하는대로 커서 아래의 문자를 삭제하지 않습니다.
listerreg

73

나는이 시나리오에 여러 번 있었다. 10 행의 모든 ​​공백을 제거하여 쉼표 뒤의 9 행과 연결되도록하고 싶습니다.

여기에 이미지 설명 입력

이것은 기본적으로 VIM에서 간단한 라인 조인입니다.

kJ 트릭을 수행합니다 (아래 참조).

Vim 조인 라인


9
나는 이것을 위해 모든 곳에서 찾고 있었다!
functionvoid

2
하하, 나는 이것을 원하고 Google에서 그것을 설명하는 방법을 모른다. 내가 아래로 스크롤해서 운이 좋게 =))
Thai Tran

1
내가 이것을 수동으로 몇 번이나했는지 믿을 수 없다. 이것이 바로 제가 찾던 것입니다. 감사합니다!
tobiasandersen

1
이것이 바로 제가 찾던 것입니다. Vim은 매일 내 마음을 날려
버립니다

4
이에 대한 설명은 다음과 같습니다. k= 위로, J= 사이에 하나의 공백이있는 현재 줄에 아래 줄을 연결합니다. kgJ공백없이 참여할 수도 있습니다 . gJ= 사이에 공백없이 아래 줄을 연결합니다. 치트 시트를
KhalilRavanna

31

요점 # 3에 답 diw하고 daw훌륭합니다.


4
메모장 ++, gedit 등과 같은 표준 편집기에서는 쉽게 CTRL + Backspace를 사용할 수 있기 때문에 마지막 글자에있을 때 단어를 뒤로 삭제하는 두 문자 명령이 없다는 것이 슬프게 느껴집니다. vim은 훌륭합니다.
itmuckel

3
@ roggan87 단어의 마지막 문자에있는 db경우 마지막 문자 앞의 문자는 삭제하지만 마지막 문자는 그대로 둡니다.
프라 샨스 찬드라

2
명령 중간에 ia이 (가) 수행하는 작업 을 설명 할 수 있습니까 ? 나는 선행 d이 "삭제" 라는 것을 알고 있고 후행 w은 "단어" 라고 가정합니다 .
Carl G

1
@CarlG 최고의 설명은 :help text-objects. 앞 단락은 매우 간결하고 잘 설명되어 있다고 생각합니다.
Randy Morris

5
<kbd> i </ kbd>는 "a word"에서와 같이 "inner"이고 <kbd> a </ kbd>는 "a"입니다. 전자는 둘러싸는 공백을 포함하지 않고 후자는 후행 공백을 포함하고 그렇지 않으면 선행 공백을 포함합니다. 매우 도움이되었습니다. 감사합니다.
Carl G

25

삽입 모드에서 :

  • ^ w
  • ^ u
  • 내 머리에서 대답 할 수 없다 ;-)

그렇지 않으면:

  • dw
  • v0x
  • 내 머리에서 대답 할 수 없다 ;-)

Vim의 삽입 모드에서 단어를 삭제할 수 있는지 몰랐습니다. 이것은 많은 도움이됩니다.
Đỗ Tiến

18

명령 모드에서 :

  1. bdw, 뒤로 삭제 단어.
  2. d^(공백이 아닌 첫 번째), d0(첫 번째 문자까지)
  3. BdW (첫 번째 공백으로 이동하여 다음 공백으로 삭제)

(커뮤니티 위키, 자유롭게 해킹하십시오.)


14
  1. db (커서가 단어 뒤에있는 경우) 또는 bdw
  2. d0(또는 d^공백이 아닌 첫 번째 문자를 삭제하려는 경우)
  3. dE또는 dtSpace첫 번째 공백 d/\sEnter을 삭제 하거나 다음 공백 문자를 삭제합니다.

편집하다

3이 왼쪽의 첫 번째 공백 문자를 삭제하도록 질문이 변경되었으므로 내 대답은 다음과 같이 변경되어야합니다.

  1. dB또는 dShiftTSpace첫 번째 공백으로 다시 삭제하거나 d?\sEnter이전 공백 문자로 삭제합니다.

보다:

:help motion.txt
:help WORD

# 3에 좋은 전화. 공백을 처리하는 방법을 잘 모르겠습니다. dF <SPACE>는 <SPACE>까지 삭제하는 반면 dT <SPACE>는 <SPACE>를 그대로 둡니다.
Mark Biek

같은 것을 찾고 여기에 왔습니다 bdw. 남아있는 캐릭터 (원래 커서 아래에 있던 캐릭터)가 db계속 짜증이났다.
Deiwin

8

완전한 답이 없다고 느낍니다.

일반적으로, 당신은 일반적으로 삭제 작업을 사용하지 않고 시작 d<motion>하고 거의 사용 x.

참고 : N지정하지 않으면 마치 N=1(단일 문자 삭제) 처럼 작동합니다.

이산 문자 :

<N>x -오른쪽 N 개의 문자 삭제

d<N><left-arrow> -왼쪽에있는 N 개의 문자 삭제

d<N><right-arrow> -오른쪽 N 개의 문자 삭제

단어 경계 :

참고 : 첫 번째 선행 / 다음 단어는 커서 아래에있는 단어입니다.

d<N>b -이전 N 번째 단어의 시작부터 현재 위치까지 삭제

d<N>e -현재 위치에서 다음 N 번째 단어 끝까지 삭제

d<N>w-동일 d<N>e하지만 후행 공백 포함

diw -커서 아래에있는 전체 단어 삭제

daw-동일 diw하지만 후행 공백 포함

선 경계 :

d0 -줄의 시작부터 현재 위치까지 삭제

d^ -공백이 아닌 첫 번째 문자에서 현재 위치까지 삭제

d$ -현재 위치에서 줄 끝까지 삭제


1

/ <CR>x

(앞으로 공백을 검색하고 Enter 키를 눌러 이동, x를 눌러 삭제)

더 마술적인 방법이 있을지 모르지만 나는 하나를 모른다.


왼쪽의 첫 번째 공백을 삭제하려면? 내 예에서 / 대신.
brettkelly
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.