[vim] Vim에서 자동 줄 바꿈 (들여 쓰기 유지)
나는 vim에서 전체 단어를 감싸는 방법을 설명하는 이 게시물 을 보고있었습니다 . 허용 된 해결책은 다음과 같습니다.
:set formatoptions=l
:set lbr
이 텍스트를 사용합니다 (탭은 \ t로 표시됨).
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
이렇게하면 다음과 같은 동작이 수행됩니다 (탭은 \ t로 표시됨).
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
그러나이 기능을 재정의하고 싶습니다. 줄 바꿈 된 줄 앞에 위의 줄에 1을 더한 것과 동일한 수의 탭이 있기를 바랍니다. 즉 :
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|\t\t\twrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
어떤 아이디어?
답변
breakindent 패치가 당신을 위해 무엇을 찾고있다. 이 스레드의 지침을 사용하여 성공적으로 적용했습니다.
Homebrew를 사용하는 OS X에서 breakindent 패치로 Vim 패치
특히 echristopherson의 Homebrew 공식.
이 스레드는 오래되었지만 Google에서 인기가 있으며 솔루션을 찾으려고 할 때 여러 번 발견했습니다.
수정 :이 패치는 이제 7.4.338 패치로 vim에 포함되어 있습니다. 참조 : https://retracile.net/blog/2014/07/18/18.00
Yosemite (Mac OS X)에서는 hombrew와 함께 snowbound의 명령을 사용했습니다.
brew install macvim --with-features=huge --override-system-vim --HEAD
답변
원래 질문을 받았을 때는 작동하지 않았지만 2014 년 6 월 25 일부터 작동합니다. (Vim을 해당 날짜보다 최신 버전으로 업데이트한다고 가정)
.vimrc에 추가하십시오.
" Indents word-wrapped lines as much as the 'parent' line
set breakindent
" Ensures word-wrap does not split words
set formatoptions=l
set lbr
그리고 그게 다야!
–
어떤 사람들 (나 자신도 포함)은 여러 컴퓨터에서 하나의 .vimrc를 공유합니다. 이 경우 성가신 오류 메시지를 방지하기 위해이 줄을 견고하게 만드는 것이 중요합니다. 이것은 조금 더 좋습니다.
if has("patch-7.4.354")
" Indents word-wrapped lines as much as the 'parent' line
set breakindent
" Ensures word-wrap does not split words
set formatoptions=l
set lbr
endif
이렇게하면 이전 버전의 vim을 사용하는 경우 오류 메시지가 표시되지 않습니다.
답변
당신이 얻을 수있는 최선의 showbreak
방법은 각 줄 바꿈 된 줄 앞에 고정 된 문자열을 넣는 옵션입니다 ( set showbreak=...
).
답변
‘showbreak’가 최선의 선택이라는 답변에 동의합니다. Showbreak는 일반적으로 인쇄되지 않는 문자 (예 : 공백 또는 탭)를 showbreak 문자열에 넣는 것을 허용하지 않으므로 일반적으로 사용되는 것처럼 왼쪽 여백을 따라 표시기를 제공합니다. 즉, 실제 들여 쓰기가 없습니다. OP의 주요 목표는 줄 바꿈 된 줄을 들여 쓰기하여 왼쪽 여백 영역을 어지럽히고 자체 줄처럼 보이지 않도록하는 것이기 때문에 이것은 좋지 않습니다.
따라서 showbreak를 사용하여 (추악한) 들여 쓰기를 추가하는 한 가지 방법은 많은 문자를 사용하는 것입니다 (예 : “: set showbreak => —————>”). 결과는 다음과 같습니다.
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|>--------------->wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
더 나은 대안은 ctrl-v, 160의 키 시퀀스를 사용하여 각 문자를 쇼 브레이크 문자열에 입력 할 수있는 공백 문자 (Vim의 인스턴스가 유니 코드를 사용한다고 가정)를 사용하는 것입니다. 이렇게하면 왼쪽이 비어 있고 실제 들여 쓰기로 보이는 표시 중단 문자열을 입력 할 수 있습니다. 예 : “: set showbreak =………. >>”여기서 각 ‘.’ 명령에서 실제로는 ctrl-V, 160을 눌러 입력 한 비 분리 공백 문자입니다. 이렇게하면 다음과 같이 멋지게 들여 쓰기 된 랩이 완성됩니다.
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
| >>wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
여전히 이전 줄의 들여 쓰기에 따라 들여 쓰기 수준을 변경할 수있는 능력은 없지만 적어도 창의 왼쪽 여백을 따라 시각적으로 복잡하지 않고 줄 바꿈 된 줄을 깔끔하게 들여 쓰기합니다. 줄 바꿈 된 줄의 들여 쓰기가 실제 줄의 시작 부분보다 적 으면 여전히 혼동이있을 수 있습니다. 그러나 이것은 쇼 브레이크 “들여 쓰기”를 상당히 크게 만들어서 피할 수 있습니다 (예 : 코드에서 일반적으로 발견되는 어떤 들여 쓰기보다 크게). ) 텍스트를 읽을 수있는 줄 바꿈을위한 충분한 공간을 제공 할만큼 충분히 작습니다. 많은 용도에 대해 40 또는 50 공백의 쇼 브레이크 들여 쓰기가이를 잘 수행 할 것이라고 생각합니다.