vi에서 두 줄을 어떻게 연결합니까?


169

아래와 같이 텍스트 파일에 두 줄이 있습니다.

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

vi와 같이 두 줄을 아래에 추가하고 싶습니다.

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

두 번째 줄이 삭제되고 두 번째 줄의 내용이 첫 번째 줄에 추가되었습니다.

vi에서 명령 모드를 사용하여 어떻게 할 수 있습니까?

답변:


310

Shift+ J는 현재 행에서 행 변경 문자를 제거하므로 행의 어느 위치에서나 "J"를 누르면 현재 행과 다음 행을 원하는 방식으로 결합 할 수 있습니다.


9
상부 케이스 J 커서 라인 소문자 이동 가입

4
소문자 J가 아닌 대문자 J였습니다. 따라서 Shift-J.
— Jonathan Leffler

28
"현재 행에서 행 변경 문자를 제거합니다"는 J가하는 일을 설명하기에 매우 어색한 방법이며 실제로 정확하지도 않습니다. J는이 행을 다음 행에 "결합"합니다. 이 과정에서 줄 바꿈을 제거하고 다른 방법으로 공백을 조작합니다.
— Laurence Gonsalves

5
ㅋ. GJ에서 vim마지막 줄로 이동 한 후 다음 줄에 연결하려고 시도합니다. 결합 명령이 의미가없는 유일한 위치입니다. 그래, 나는이 재미 :-) 발견
— 알록 Singhal이

2
여전히이 편집기를 사용하여 두 줄을 결합하기 위해 StackOverflow로 이동해야한다는 것을 알 수 없습니다!
— Manitra Andriamitondra

59

Vi 또는 Vim?

어쨌든 다음 명령은 'nocompatible'모드의 Vim에서 작동합니다. 즉, 거의 순수한 vi라고 생각합니다.

:join!

정상적인 명령으로 사용하려면

gJ

'gJ'를 사용하면 공백을 추가하거나 제거하지 않고 그대로 라인을 결합합니다.

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

결과:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

'J'명령을 사용하면 다음이 가능합니다.

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT

type>와 사이에 공백이 _ID있습니다.


2
g/pattern/joinVIM 에서는 작동하지만 g/pattern/J그렇지는 않지만 지적하십시오 . 미래의 일부 사람들을 도울 수 있습니다.
— jisaacstone

나는 패턴과의 결합을 좋아하지만 공백으로 두 줄을 결합합니다. 어쨌든 공백없이 패턴으로 두 줄을 연결 하시겠습니까?
— David.Chu.ca

g / 패턴 / 가입! 그렇게하는 것 같습니다.
— 포트 보이즈

1
좀 더 복잡 할 수 있습니까? :-)
— Johannes Overmann

22

이것은해야합니다 :

J


6
'J'는 선을 결합하는 동안 추가 공간을 제공합니다.
— Maxim Kim

3
@MaximKim : 그리고 이것이 이유 입니다. 참고 :h J어떻게 기능을 비활성화하는 방법을 알려드립니다.
— ereOn

2
gJvim이 라인을
— 연결할

17

vi에서는 J( Shift+ J) 또는 :join대부분 원하는대로해야합니다. 공백을 조정합니다.특히, 대부분의 경우 두 개의 결합 된 줄 사이에 공백이 생겨 두 번째 줄이 들여 쓰기되면 들여 쓰기가 결합 전에 제거됩니다.

Vim에서는 gJ( G, Shift+ J) 또는 을 사용할 수도 있습니다 :join!. 공백을 조정하지 않고 선을 결합합니다.

Vim에서 자세한 내용 :help J을 참조하십시오.


사용하여 한 가지주의 gJ와는 J입니다 모두 장하여 합류 지점에 커서 만 :join!하고 :join말아.
— SergioAraujo

4

" \n"를 ""로 바꾸십시오 .

문서의 모든 줄에 대해 vi / Vim에서 :

%s/>\n_/>_/g

모든 교체를 확인하려면 다음을 수행하십시오.

%s/>\n_/>_/gc


1

첫 번째 줄에서 Shift+ 4( "$")를 누른 다음 Shift+ j( "J")를 누릅니다 .

도움이 필요하면 vi로 이동 한 다음을 누르십시오 F1.


3
$ 행의 끝으로 이동하지만, J 필요하지 않습니다

1
J가 라인에 참여하기 위해 라인의 끝에있을 필요는 없습니다.
— Jonathan Leffler

1
실제로 $를 누를 필요는 없습니다.
— Laurence Gonsalves

1
@laurence .pressing $는 커서가 새 라인 차터 바로 옆에 위치하고 이것이 필수입니다.
— Vijay

1

Vim에서는을 사용할 수도 있습니다 gJ.

ََ


1

해당 줄에 커서를 두지 않고 두 줄을 연결하는 다른 방법은 다음과 같습니다.

:6,6s#\n##

6은 다른 회선이 결합 될 회선 번호입니다. 줄 번호를 표시하려면:set nu .

다음 줄을 연결해야하는 커서에있는 경우 :

:s#\n##

두 줄 모두 한 줄에 하나만 존재 하기 때문에 glike 가 필요하지 않습니다 .:s#\n##g\n


Shift+V마지막 줄을 제외한 모든 줄을 선택하고, :'<,'>s/\n/, /이 예에서는 줄 끝에 쉼표와 공백을 넣는 동안 줄을 연결하는 것이 더 쉽습니다 . 무언가를 선택하고 :일반 모드로 입력 '<,'>하면 명령 행에 자동으로 나타납니다.
— Evgeni Sergeev

선호하는 구분 기호를 사용하여 선택된 다중 회선 결합에 적합합니다. 일반 모드 또는 시각적 모드에서 오타 하나를 찾았습니까?
— vusan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.