비주얼 모드에서 코드 교체를 차단하는 방법은 무엇입니까?


26

처음 두 문자를 바꾸려는 항목 목록이 있습니다.

a) item 1
b) item 2
c) item 3

가장 빠른 방법은 무엇입니까?

* item 1
* item 2
* item 3

시각적 모드에 대한 접근 방식이 있습니다 (Ctr-v, jjj, 그러나 두 개의 바꾸기 명령을 수행해야합니다. Iirc,이 대체는 하나의 명령으로 수행 할 수 있습니다)


1
같은 .,.+2s/^../*/(또는 시각적으로 선택에서)? 왜 두 개의 대체 명령입니까? 2c두 문자를 대체합니다.
muru

때로는 시각적 선택의 첫 번째 줄만 변경되고을 반복합니다. 다른 줄은 문제를 일으킨다.
poseid

2
@poseid Ctrl-C대신 누르는 습관 이 Esc있습니까? 이것은 무엇보다도 비주얼 블록 선택의 각 라인에 변경 사항이 적용되는 것을 방지합니다.
tommcdo 2019

그것이 혼란의 주된 이유가 될 수 있습니다! 감사!
poseid

답변:


26

비주얼 블록 선택 :

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

치환:

:,+2s/^.\{2}/*

도트 공식 :

cE*<Esc>
j.
j.

1
미친 접근법 : textobj-word-column.vim을 사용 하면 할 수 ciC*<esc>있고 할 수 있습니다 . 참고 :이 플러그인은 "내 뜻대로하는"플러그인이므로 예기치 않은 장소와 방식으로 실패하지만 플러그인은 이와 같은 쉬운 경우에도 여전히 유용합니다.
피터 랭커

일반과 점 공식을 흥미롭게!
poseid

3
Visual-block 솔루션의 경우 첫 번째 줄에만 텍스트가 입력되는 것을 볼 수 있습니다. 를 누르면 <Esc>나머지 줄이 채워집니다.
tommcdo

c를 대체 할 수있는 방법에 대한 제안이 있습니까? ctrl + D (자체)
Jordan Mackie

2
@JordanMackie c는 "변경"입니다.
romainl

17

보다 효율적인 방법은 다음과 같습니다.

  1. 첫 번째 항목과 첫 번째 문자 ( 0) 에 커서를 놓고 'blockwise'비주얼 모드 Ctrl+를 입력 v하고 현재 단락의 첫 번째 열을 선택하여 }(목록이 줄 바꿈으로 끝나는 경우) 화살표 키 와 같은 다른 방법을 사용하십시오 (이동하려면 선택 주변) 또는 마지막 요소가 /c)있는 패턴 검색 c).
  2. 하여 목록의 마지막 심볼로 이동 k하고 l(또는 사용 화살표 키를 ), 그래서 두 개의 열 당신이 변경하려는 선택됩니다.
  3. 를 눌러 선택한 텍스트를 변경하고 c글 머리 기호 ( *)를 입력하고을 눌러 완료하십시오 Esc.

더 긴 목록에서 특히 효율적으로 작동합니다.

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