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: 잘못된 범위