Programing

Vim에서 줄 바꿈 삭제

lottogame 2020. 4. 3. 08:10
반응형

Vim에서 줄 바꿈 삭제


Vim의 줄 끝에서 줄 바꿈을 삭제하여 다음 줄이 현재 줄에 추가되도록하는 방법이 있습니까?

예를 들면 다음과 같습니다.

Evaluator<T>():
    _bestPos(){
}

줄을 복사하여 이전 줄에 붙여 넣지 않고이 모든 것을 한 줄에 넣고 싶습니다. 커서를 각 줄의 끝 부분에 놓고 키를 누르고 다음 줄이 커서가있는 것과 같은 줄로 이동할 수 있어야합니다.

최종 결과 :

Evaluator<T>(): _bestPos(){ }

Vim에서 가능합니까?


첫 번째 줄에있는 경우 (대문자)를 누르면 J해당 줄과 다음 줄이 합쳐져 줄 바꿈이 제거됩니다. 이것을 카운트와 결합 할 수도 있으므로를 누르면 3J3 개의 라인이 모두 결합됩니다.


확실히. Vim은 \ n 문자를 줄 바꿈으로 인식하므로 검색하고 바꿀 수 있습니다. 명령 모드에서 다음을 입력하십시오.

:%s/\n/

정상 모드에서 상단 라인에있는 동안 Shift+를 누르십시오 j.

개수를 앞에 추가 할 수도 있으므로 3J맨 위 줄에서 해당 줄을 모두 합칩니다.


J여분의 선행 간격 (있는 경우)을 삭제하고 단일 공백으로 라인을 결합합니다. (일부 예외 : after /[.!?]$/에는 공백이 두 개 삽입 될 수 있습니다 /^\s*)/.

해당 동작을 원하지 않으면 gJ개행을 제거하고 공백으로 영리한 작업을 수행하지 마십시오.


다른 답변에서 언급했듯이 (대문자) J및 검색 + 바꾸기는 \n일반적으로 줄 바꿈 문자를 제거하고 줄을 연결하는 데 사용할 수 있습니다.

그러나 마지막 줄에서 후행 줄 바꿈 문자 제거하려면 Vim 에서이 작업을 수행해야합니다.

:set noendofline binary
:w

다음은 모두 커서가 첫 번째 줄에 있다고 가정합니다.

노멀 매핑 사용 :

3Shift+J

Ex 명령 사용 :

:,+2j

의 약어입니다

:.,.+2 join

다음 바로 가기로 입력 할 수도 있습니다.

3:j

더 짧은 Ex 명령 :

:j3

set backspace=indent,eol,start

당신의 .vimrc에 사용할 수 backspacedelete\n삽입 모드 (줄 바꿈).

set whichwrap+=<,>,h,l,[,]

X(1 열에있을 때) 일반 모드에서 이전 LF를 삭제할 수 있습니다 .


아마도 귀하의 설정에 따라 다르지만 일반적으로 A<delete>

A줄의 끝에 어디에 추가합니까? 아마도 nocompatible모드 가 필요 합니다 :)


<CURSOR>Evaluator<T>():
    _bestPos(){
}

첫 줄에 커서

이제 일반 모드에서

shift+v
2j
shift+j

또는

V2jJ

: 정상 V2jJ


줄 바꿈을 제거하려는 행에서 A (행 끝에 추가, 삽입 모드로 전환)를 누른 다음 삭제를 누릅니다.


다른 쉘 도구를 사용하지 않아도된다면

tr -d "\n" < file >t && mv -f t file

sed -i.bak -e :a -e 'N;s/\n//;ba' file

awk '{printf "%s",$0 }' file >t && mv -f t file

문제는 보이지 않는 여러 문자 0A (\ n)가 누적 될 수 있다는 것입니다. 100 행에서 끝까지 정리하려고한다고 가정하십시오.

ESC 입력 및 : (터미널 사령관)

:110,$s/^\n//

vim 스크립트에서 :

execute '110,$s/^\n//'

설명 : 110에서 끝까지 새 행으로 시작하는 행을 찾고 (공백) 제거합니다.

참고 URL : https://stackoverflow.com/questions/3983406/delete-newline-in-vim

반응형