문자 x의 n 번째 발생까지 커서에서 삭제


16

선택 항목을 먼저보고 나서 삭제하려는 경우 문자 xd/x<CR>있거나 없을 때까지 커서에서 삭제할 수 있음을 알고 있습니다 v/x<CR>d. xn 번째 발생 까지 현재 커서 위치에서 어떻게 삭제할 수 있습니까?

예를 들어, 커서가 첫 번째 공백 뒤에 있으면

야다 야다 야다
야다 야다 야다 x
야다 야다 야다 x
야다 야다 야다 x

xx

그리고 세 번째 x 까지 결과 를 제거하는 명령을 입력하십시오 .

야다
xx

답변:


22

넌 할 수있어 :

wd4/x<Enter>

텍스트 왼쪽 상단에서 시작하면

설명

  • w : 다음 단어의 시작으로 이동
  • d : 삭제
  • 4/x<Enter> : x의 네 번째 출현까지

당신이 횟수를 알 수없는 경우에는, 사전에 그것을하고 싶은 당신도 할 수 있습니다 : d/x<Enter>다음 공격 .반복한다


5
보너스 팁 :이 또한 작동 f과 친구 ( F, t, T, ;) : 예를 들어 2fx두 번째로 얻을 것이다 x, 또는 2;마지막 반복됩니다 f두 번합니다.
Martin Tournoij

1
@Carpetsmoker : 현재 줄의 글자에만 적용됩니다.
Jürgen Krämer

5

다음을 입력하여이 작업을 수행 할 수 있습니다

<n>df<x>

어디:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x

0
<n>macro 

매크로 "n"을 반복하기 위해 vim에서 일반적으로 사용됩니다.

x가 처음 나타날 때까지 삭제하려면을 사용 1dfx합니다. 마찬가지로 x가 3 번 나타날 때까지 삭제하려면을 사용 3dfx합니다.


1
나는 당신이 "매크로"라는 단어를 놓쳤다 고 생각한다. vim에서 매크로는 레지스터에 기록 된 키의 시퀀스이며 레지스터가 @x어디에 있는지 호출한다 x. 당신이 말하는 것은 정상 모드 명령입니다.
statox

예, 나는 정상적인 명령을 의미했습니다. 그러나 이것은 매크로에서도 마찬가지입니다. 매크로 앞에 숫자를 추가하여 매크로를 n 번 실행할 수 있습니다.
thenakulchawla

1
네 맞습니다. 나는 <n>macro매크로에 대한 vim의 표준 표기법이 아니라고 지적했으며 대답은 일반 모드 명령을 사용하므로 kapil의 명령과 거의 같습니다.
statox

0

주어진:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$

여기서 $줄의 끝 표시 ( :set list모드), 커서가 yada첫 번째 줄에서 두 번째 시작 부분에 있으면 먼저을 사용하여 이전 공간으로 백업 h하여 삭제에 포함시켜야합니다. 그럼 그냥 4d/xEnter. 다시 말해, 앞에있는 숫자입니다 d/x. 결과는 정확히 다음과 같습니다.

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