vim 자동 교체

vim 자동 교체

다음 줄이 있습니다.

    '0,
    '1,
    '2,
    '3,

쉼표 앞에 따옴표를 붙이는 방법은 무엇입니까?

지금까지 나는 다음을 시도했습니다.

%s/[0-9],/&/g

그래서 & here은 일치하는 패턴을 대체합니다 ...

답변1

다음과 같은 것을 사용할 수 있습니다.

%s/\('[0-9]\),/\1',/

선택 그룹을 사용 \(하고 생성한 다음 대체 측면(첫 번째 그룹을 의미)에서 참조합니다.\)\1

답변2

네가 원한다면이동하다숫자 이전 위치부터 쉼표 이전 위치까지 할당량을 지정한 다음 그룹화를 사용할 수 있습니다.

%s/'\([0-9]\),/\1',/

또는 쉼표 앞에 다른 인용문을 추가하려면 첫 번째 그룹에 인용문을 포함시키세요.

%s/\('[0-9]\),/\1',/

답변3

보통 저는 이런 작업에 매크로를 사용합니다.

qqEi'<Esc>0jq3@q

작업이 완료됩니다( <Esc>5개의 개별 키가 아닌 Esc 키를 누르는 부분이 있다는 점에 유의하세요). 분석은 다음과 같습니다.

  • qq매크로 기록을 시작하고 이를 키에 할당합니다 q.
  • Ei'<Esc>단어 끝으로 이동하여 를 삽입합니다 '.
  • 0j다음 줄의 시작 부분으로 이동합니다.
  • q녹음을 종료합니다.
  • 3@q매크로를 3번 재생하고 다른 3개 라인에도 동일한 작업을 적용합니다.

3가지고 있는 행 수로 바꾸세요 .

답변4

어쩌면 이 기능이 필요한 일반 양식을 정의하는 것을 잊었을 수도 있습니다. 추측 없이 요청한 내용을 달성하기 위해 예제 입력에 적합한 가장 간단한(게으른!) 솔루션은 다음과 같습니다.

%s/,/',/

더 복잡한 사례도 처리하려면 패턴 대체가 작동해야 하는 가장 복잡한 사례와 이상적으로는 대상 출력의 예를 포함하여 더 나은 예제를 작성해야 합니다.

관련 정보