vi에서 파일의 다른 특정 줄을 연결하는 방법

vi에서 파일의 다른 특정 줄을 연결하는 방법

vi/vim의 "붙여넣기" 문제에 대한 해결책을 찾고 있습니다.

텍스트 파일의 특정 줄을 연결하는 방법은 무엇입니까? 다음과 같은 파일이 있습니다.

15/10/2011 Revolution day
16/10/2011 About Rome
 - differents newspapers
  blogs an feeds
 :) hp
17/10/2011 Yep, another day

숫자로 시작하지 않는 모든 줄을 붙여넣고 싶습니다. 다음과 같은 것을 시도했지만 작동하지 않습니다.

:[!^[0-9]]!paste -d ' ' -s

답변1

:%s/\(.*\)\n\(^[^0-9]\)/\1\2/g

공백이나 그 사이에 무언가를 추가하려면 \1과 \2 사이에 추가하세요.

답변2

가능하다면 VIM에서 다음 두 단계로 수행할 수 있습니다.

먼저 모든 전선을 한 줄로 연결하십시오.

VIM에서 파일을 연 후 다음 키 입력을 실행하십시오.VGJ

  • V= 시각적 모드(문자( )가 아닌 줄 기준 v)
  • G= 모든 줄 강조 표시
  • J= 모든 전선을 연결

둘째, 결과 행이 시작되는 날짜 형식에 따라 행을 분할합니다.

VIM에서 파일을 연 후 다음 명령을 실행하십시오.

:%s#\([0-9][0-9]/[0-9][0-9]/[0-9]\)#^M\1#g

이렇게 하면 연결된 단일 행에서 NN/NN/N(여기서 N = 0-9)과 일치하는 문자열이 검색되며 이는 행 시작 부분의 날짜 형식과 일치하고 해당 일치 항목으로 분할됩니다.

답변3

v와 함께 사용하세요 join.

:v/^[0-9]/-1,join

분할:

  • :v 정규식과 일치하지 않는 줄을 선택하세요.
  • /^[0-9]/ 숫자로 시작하는 모든 줄
  • -1, 이전 줄에서 현재 줄로
  • join 공백으로 구분된 선택한 줄 병합

답변4

시도해 보십시오:

:g/^\d/,/^\d/-1j

그리고 오류 메시지를 무시하세요E16: 잘못된 범위

관련 정보