2009-12-16 3 views
143

아래처럼 텍스트 파일에 두 줄이 있습니다 :vi로 두 행을 결합시키는 방법은 무엇입니까?

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 

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

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

답변

258

시프트 + J는, 현재 행에서 라인 변경 문자를 제거합니다.

+6

대문자 J는 줄을 결합하고 소문자는 커서를 이동합니다. –

+3

대문자 J, 소문자 J가 아닙니다. 그러므로 Shift-J. –

+0

"j"를 누르면 커서가 다음 줄로 이동하지만 "J"를 누르면 두 줄이 합쳐집니다. –

19

이 그것을 수행해야합니다

J

+6

'J'는 줄을 결합하는 동안 추가 공간을 제공합니다. –

+2

@MaximKim : [이것이 이유입니다] (http://en.wikipedia.org/wiki/Sentence_spacing). ': h J'는 그 기능을 비활성화시키는 방법을 알려줄 것입니다. – ereOn

+0

vim이 줄을 결합 할 때 공백을 추가하지 않으려면'gJ'를 사용하십시오. – qwertzguy

1

눌러 첫 번째 줄에 ("$") + 4 시프트 , 다음 시프트 + J ("J").

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

+3

$가 행의 끝으로 이동하지만 J의 경우에는 필요하지 않습니다. –

+1

끝 부분에있을 필요는 없습니다. J가 줄을 결합하는 줄. –

+1

실제로 $를 눌러야 할 필요는 없습니다. –

4

"\n"을 ""로 바꿉니다. VI에서

/빔 문서의 모든 라인 :

%s/>\n_/>_/g 

당신이 모든 교체 확인하려면 다음

%s/>\n_/>_/gc 
53

바이올렛 또는 빔을?

어쨌든 다음 명령은 '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'명령 당신은해야합니다 : type>_ID 사이

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

참고 공간.

+2

'g/pattern/join'은 VIM에서 작동하지만'g/pattern/J'는 작동하지 않는다는 것을 지적하고 싶습니다. 미래의 사람들을 도울 수 있습니다. – jisaacstone

+0

패턴을 사용하여 조인하는 것을 좋아하지만 두 줄을 공백으로 결합합니다.여하튼 공백없는 패턴으로 두 줄을 결합 하시겠습니까? –

+0

g/pattern/join! 그렇게하는 것 같습니다. – fortboise

15

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

정력에서도 gJ (g, shift-j) 또는 :join!을 사용할 수 있습니다. 이것들은 공백 조정을하지 않고 행을 결합합니다.

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

+0

'gJ'와'J'를 사용할 때주의해야 할 점은 양쪽 모두 커서를 연결 지점으로 변경하지만': join!'과': join''은하지 말아야한다는 것입니다. – SergioAraujo

1

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

1

그 라인에 커서를 배치하지 않고 두 줄에 합류하는 또 다른 방법은 다음과 같습니다

:6,6s#\n## 
다음

6 다른 라인이 결합 될 수있는 행 번호입니다. 줄 번호를 표시하려면 :set nu을 사용하십시오.

우리가 다음 줄이 다음에 가입해야 커서에있는 경우 : 한 줄에 하나의 \n가 존재하기 때문에 두 경우 모두

:s#\n## 

우리는 :s#\n##g 같은 g 필요하지 않습니다.

+0

'Shift'+ V를 사용하여 마지막 줄을 제외하고 조인 할 모든 줄을 선택한 다음 ':'<,'> s/\ n /, /이 예제에서는 쉼표와 공백을 넣고 줄을 결합합니다. 각 끝에. 무언가가 선택되고 일반 모드에서':'를 입력하면 명령 행에''<,'> '이 자동으로 나타납니다. –

+0

원하는 구분 기호로 선택된 여러 줄 결합에 적합합니다. 하나의 오타가 정상 모드 또는 비주얼 모드에서 발견 되었습니까? – vusan

2

선택한 라인 (비주얼 모드)에 가입하려면 gJ을 눌러 공백없이 라인을 결합하십시오.

자세한 내용은 the vi/Vim Stack Exchange site에 설명되어 있습니다.

관련 문제