답변:
gJ
조합이 수행; 부터 :help gJ
:
최소 두 줄로 [count] 줄을 결합하십시오. 공백을 삽입하거나 제거하지 마십시오.
J
키 입력을 저장하려는 경우에 리 바인드 할 수 있습니다.
:nnoremap J gJ
이것은 공백을 제거 하지 않으므로 현재 행이 공백으로 끝나거나 다음 행이 하나 이상의 공백으로 시작 하면 그대로 유지됩니다 .
그래서:
Hello
world
된다 :
Hello world
우리 는Jx
이 경우에 사용할 수 있습니다 Helloworld
. 그러나 그것은 모든 경우에 작동하지는 않습니다. 도움에서 :
강조 표시된 줄을 최소 두 줄로 연결하십시오. 들여 쓰기를 제거하고 최대 2 개의 공백을 삽입하십시오
[...]
"gJ"를 제외한이 명령은 후행 공백이 없거나 다음 줄이 ')'로 시작하지 않는 한 공백 대신 하나의 공백을 삽입합니다.
따라서 어떤 경우에는 두 개 이상의 공백이 있거나 공백이 삽입되지 않습니다. 내가 볼 수있는 한,이 행동을 바꾸는 쉬운 방법은 없습니다. gJ
공백없이 항상 결합 하도록 수정하는 함수를 만들었습니다 .
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
참조 : :help J
,:help 'joinspaces'
매크로를 작성하여 재사용하십시오.
qaJxq
이제 공간없이 두 줄을 연결하려는 위치를 a
사용하여 매크로를 재생하십시오 @a.
@@이전 매크로를 반복합니다. @여러 줄을 연결하기 만하면 됩니다.
@a
할 수있는 이유는 무엇 Jx
입니까? 같은 수의 키 누름과 SHIFT 누름!
3@a
3 줄을 결합 하는 데 사용할 수 있지만 3Jx
3 줄을 공백으로 결합한 다음 두 번째 줄과 3 번째 줄 사이의 공백을 삭제하고 다른 줄 사이에 공백을 남겨 둡니다.
병합하려는 행을 선택하고 정상 모드에서 콜론 을 입력하여 Ex 명령을 입력 :
하십시오. 그런 다음이 명령을 입력하십시오.
s/$\n\s*//gc
전체 명령은 다음과 같아야합니다.
:'<,'>s/$\n\s*//gc
이것은 실제로 줄 바꿈 문자뿐만 아니라 공백 들여 쓰기를 대체하는 @insidepower 명령의 수정 된 버전입니다 .
설명:
'<,'>
시각적 모드에서 선택한 선만 수정한다는 의미입니다.
/$\n\s*
A는 정규식 패턴. 우리는 $
줄 바꿈 문자로 끝나고 그 후에 \n
결정되지 않은 수의 공백이 있는 일치 항목을 찾고 *
있습니다.
s/pattern//gc
각 패턴 을 찾아 확인시 빈 문자로 바꾸는 대체 명령 입니다.
Vim의 정규 표현식에 대한 플래그 및 메타 문자에 대한 자세한 내용은 Vim Reference의이 장을 참조하십시오.