vim에서 문자열의 단어를 문자열 덩어리로 짜는 방법은 무엇입니까?

vim에서 문자열의 단어를 문자열 덩어리로 짜는 방법은 무엇입니까?

문자열과 문자열 블록이 주어지면, 예를 들어

끈:

Use three words.

막힘:

This is the first string of another block of strings.
This is the second string of another block of strings.
This is the third string of another block of strings.

이제 새 블록이 다음과 같이 보이도록 문자열과 블록을 한 줄씩 연결/엮고 싶습니다.

This is the first string of another block of strings.
Use

This is the second string of another block of strings.
three

This is the third string of another block of strings.
words.

내가 지금까지 한 일은

:'<,'>s/\s/\r\r\r

'<,'>s문자열에 걸쳐 있는 범위는 어디에 있습니까 Use three words.? 그러면 문자열의 각 단어가 새 줄에 표시됩니다.

Use


three


words.

그런 다음 Ctrl+v블록을 선택하고 복사하여 붙여넣으면 다음과 같은 결과가 나타납니다.

This is the first string of another block of strings.
Use
     This is the second string of another block of strings.
three
     This is the third string of another block of strings.
words.

필요한 모양으로 수동으로 바꾸고 if v와 사용법을 많이 사용했습니다.wx

vim의 간단한 복사 및 붙여넣기 지침을 사용하여 이 작업을 어떻게 더 효율적으로 수행할 수 있습니까?

답변1

붙여넣기를 교체하여 잘라내기 버퍼에서 직접 텍스트를 전송할 수 있습니다. 선택 교체에 붙여넣으면 dwVP해당 줄에서 삭제된 단어를 제외한 모든 항목이 삭제됩니다.

에서 시작하다

Use three words.
This is the first string of another block of strings.
This is the second string of another block of strings.
This is the third string of another block of strings.

그리고 할

:normal ggdd    " three-word line in the cut buffer, cursor on first "This" line
:normal pdwVPo<ESC>j  " dwVP is cut a word and exchange-paste it back for the rest of the line
:normal pdwVPo<ESC>j  " do it again
:normal pdwVPo<ESC>j  " again

단 3번만 QQ를 수행하지 않고 ggddqqpdwVPo<ESC>jq@q@@더 짧게 진행하겠습니다.

답변2

나는 당신처럼 문장을 새로운 줄로 나누기 시작할 것입니다.

  • 두 블록의 각 행에 번호를 매깁니다.
  • 한 섹션을 다른 섹션에 완전히 붙여넣기
  • 숫자순으로 정렬
  • 번호 삭제

이것은 다음과 같이 보일 수 있습니다

  • 블록 1-:%s/\s/\r/g
  • 블록 1-%s/^/\=line('.')*1000+1
  • 브록 2-%s/^/\=line('.')*1000
  • 전체를 복사하세요브록 2버퍼 입력블록 1
  • sort n
  • %s/\v^\d+

관련 정보