Vim을 인용문으로 여러 줄 묶으세요.

Vim을 인용문으로 여러 줄 묶으세요.

다음 형식의 블록이 있습니다.

    String that is not supposed to be enclosed in quotes
    String that is supposed to be enclosed in quotes

    String that is not supposed to be enclosed in quotes
    String that is supposed to be enclosed in quotes

    String that is not supposed to be enclosed in quotes
    String that is supposed to be enclosed in quotes

    String that is not supposed to be enclosed in quotes
    String that is supposed to be enclosed in quotes

따옴표로 묶어야 한다는 내용의 줄을 따옴표로 묶어야 합니다.

    String that is not supposed to be enclosed in quotes
    "String that is supposed to be enclosed in quotes"

    String that is not supposed to be enclosed in quotes
    "String that is supposed to be enclosed in quotes"

    String that is not supposed to be enclosed in quotes
    "String that is supposed to be enclosed in quotes"

    String that is not supposed to be enclosed in quotes
    "String that is supposed to be enclosed in quotes"

Vim으로 이 작업을 수행하는 반자동 방법이 있나요? 가능한 해결책에는 명령 이 포함될 수 있다고 생각했습니다 g.

답변1

정규식 사용:

:%s/.*is supposed.*/"&"/

"반자동"이란 각 대체 전에 메시지를 표시하려는 경우 /c대체 패턴에 수정자를 추가하기만 하면 됩니다.

:%s/.*is supposed.*/"&"/c

설명

  • :%s이는 현재 버퍼의 모든 라인에 이 대체를 적용한다는 의미입니다.
  • 우리가 일치하는 패턴은 단어를 포함하는 행입니다 is supposed(다른 행에 "따옴표로 묶음" 없이 "is 추정"이라는 단어가 포함되어 있는 경우 언제든지 패턴을 다음으로 변경할 수 있습니다)..*is supposed to be enclosed in quotes.*
  • 일치하는 패턴을 바꾸는 데 사용하는 문자열은 입니다 "&". 여기서는 &패턴과 일치하는 항목을 나타냅니다.

답변2

유명한서라운드 플러그인이를 빠르고 쉽게 수행할 수 있는 다양한 매핑을 제공합니다. 들여쓰기 없이 전체 줄을 인용하려면 를 사용하세요 yss". 다음 :global명령을 통해 예제 텍스트와 일치하는 모든 줄에 이를 자동으로 적용할 수 있습니다 :normal.

:g/is supposed/normal yss"

아니면 일치하는 줄을 검색하고 다음 n을 통해 반복하세요..

답변3

나는 거의 항상 대체 검색보다 매크로를 선호합니다. 매크로는 더 강력하고 기억하기가 적으면서도 도약하기 전에 대화식으로 확인할 수 있는 옵션을 유지하기 때문입니다. 변경하려는 첫 번째 줄에 다음을 시도해 보십시오(가독성을 위해 ESC 및 ENTER 주위에 공백을 입력하지 마십시오).

qqI" ESC $bea" ESC /is supposed ENTER zzq

기능:

  • qq"q"라는 매크로를 시작합니다(qa는 매크로 "a"를 시작합니다).
  • I" ESC"0"처럼 줄의 시작 부분이 아닌 첫 번째 단어 앞에 "를 삽입하여 일반적으로 중요한 공백을 유지합니다.
  • $bea" ESC줄의 끝($)으로 이동한 다음 단어를 백업하고(b) 단어의 끝으로 다시 앞으로 이동(e)하고 마지막으로 "를 추가합니다(a). 이 방법은 줄의 마지막 단어 뒤에 추가됩니다. 일반적으로 쓸모없는 후행 공백이 뒤에 오는 경우.
  • /is supposed편집을 수행한 후에는 "가정됨"의 다음 인스턴스를 검색합니다. 이 인스턴스는 더 아래에 있을 수 있으며, 편집을 계속할지 여부를 보고 결정할 수 있도록 거기에 커서를 위치시킵니다. "가정"이 발견되지 않으면 매크로는 손상 없이 종료됩니다.
  • zzq현재 행보다 몇 줄 더 볼 수 있도록 페이지(zz)의 중앙에 잘 배치됩니다. 매크로를 빠르게 적용하고 몇 단계 앞선 내용을 살펴보고 싶을 때 유용합니다. "q"는 "q"라고도 불리는 매크로의 정의를 끝냅니다.

사용하는 방법:

  • 위의 매크로 정의가 완료되면 첫 번째 줄이 이미 변경되었습니다.
  • 오류가 있는 경우 이 한 줄을 실행 취소하고 다시 시도하면 됩니다.
  • 이제 커서는 두 번째 일치 항목(있는 경우)에 위치하며 페이지 중앙에 잘 배치됩니다.
  • 원하는 경우 @q를 사용하여 매크로(또는 다른 유사한 매크로!)를 적용할 수 있습니다. 그러면 라인을 편집하고 세 번째 일치 항목에 위치를 지정할 수 있습니다.
  • @@(@q보다 빠름)을 사용하여 마지막 매크로를 다시 적용할 수 있습니다.
  • 111@@처럼 여러 가지 작업을 동시에 수행할 수 있습니다. 매크로를 적용하는 동안 오류가 발생하면 더 이상 반복되지 않는다는 점을 기억하세요.
  • 또는 PageDown 및 친구들을 수동으로 건너뛰고 매크로를 다시 적용할 수도 있습니다.
  • 그리고 다른 편집 내용과 함께 매크로를 인터리브할 수도 있습니다.
  • 그리고 이 매크로를 다른 버퍼나 파일에 적용하려면 옆에 :tab을 사용할 수 있습니다.
  • Cherry on Pie: vim을 종료한 후에도 매크로가 기억됩니다!

매크로에 익숙해지면 놀라운 능력을 갖게 될 것입니다!

답변4

정규식 버전은 행이 실제로 그런 경우에 작동하며 어떤 행이 어떤 것인지 식별하는 고유한 문자열이 있습니다. 그렇지 않으면 녹음할 수 있습니다.매크로당신이 원하는 것을하기 위해.

그렇게 하려면 라인 2의 시작 부분으로 이동하여 다음을 누르십시오.

qq I" Escape A" Escape 3j q

그러면 첫 번째 줄이 인용되고 다음 줄을 살펴보게 됩니다. 그런 다음 을 눌러 @q방금 수행한 모든 작업을 재생하거나 5@q해당 작업을 5번 수행할 수 있습니다 .

작동 방식: q는 우리가 호출하는 매크로 기록을 시작하는 명령입니다 q(어떤 문자든 선택할 수 있습니다). 해당 매크로에서는 줄 시작 부분에 큰따옴표를 삽입하고( I") 삽입 모드를 종료하고(Escape) 줄 끝에 큰따옴표를 추가하고( ) A"삽입 모드를 다시 종료합니다. 3j인용할 다음 줄까지 세 줄( )을 내려갑니다 . q매크로 기록을 중지합니다.

그 후에는 시작했던 곳과 같은 위치로 돌아왔으므로 저장한 매크로( @)를 실행 q하여 다음 행 쌍에서 다시 수행할 수 있습니다. @에서처럼 앞에 카운트를 사용하면 5@q그렇게 여러 번 수행합니다.


대신 3j간격이 불규칙한 경우 다음을 사용할 수 있습니다 }}k. 다음 문단 뒤의 빈 줄까지 두 문단 아래로 이동(}}) 및 백업( k)을 수행합니다. 어느 쪽이든 매크로 실행은 동일합니다.

실제로 원하는 작업을 수행하고 원하는 위치로 돌아가게 하는 일련의 작업을 기록할 수 있습니다. 수행하는 단계가 실행하려는 모든 상황에서 의미가 있는 한 매크로를 시작하고 필요한 모든 변경을 수행한 후 다음 위치로 이동한 후 매크로를 중지하고 반복할 수 있습니다.

관련 정보