[vim] 임의 너비의 창에서 Vim의 80 자에서 소프트 랩

Vim의 소프트 랩 기능 ( :set wrap)을 사용하여 실제 창 너비에 관계없이 일부 코드를 80 자로 래핑하고 싶습니다.

아직이 방법을 찾을 수 없었습니다. 모든 부드러운 포장은 창 너비에 묶여있는 것 같습니다.

  • textwidth그리고 wrapmargin둘 하드 포장을 위해 (그들은 파일에 개행 문자를 삽입)
  • 수직으로 여러 창으로 나누고 일종의 작품 중 하나에서 :vertical resize 80(어쩌면 :set breakat=어떤 문자에서 나누기를 허용하는 경우도 있지만) 사용하지만 :set number줄 번호가 가변 열 수를 차지할 때 줄 바꿈 파일 길이)와 80의 일부입니다.

vim에서 이것을 할 수있는 방법이 있습니까? 다른 소식통에 따르면 유망 해 보이지 않습니다 .

현재 근사값은 /^.\{80}\zs.\+기본 검색으로 표시되어 적어도 강조 표시됩니다. 나는 :syntax그것을 위해 아이템을 추가하는 것에 대해 생각 했지만 다른 구문 아이템과 겹칠 때 깨져서 그 아이디어를 떨어 뜨렸다.



답변

넌 할 수있어

  • 비아 행 번호 열에 큰 최소 폭을 설정 :set numberwidth=6하고
  • 그런 다음 :set columns=86(또는 마우스로) 창을 적절한 크기로 조정할 수 있습니다 .

백만 줄의 파일을 편집하면 문제가있을 수 있지만 그럴 가능성은 없습니다. 이 방법으로 6 열의 화면 공간을 낭비하고 있습니다. 따라서 여전히 모든 종류의 문제가 있습니다.

여기여기에 표시된 :match것처럼 80 번째 열을지나 강조 표시 할 수 있습니다 .

그 외에도 나는 이것을 할 수있는 방법을 볼 수 없습니다. 그래도 좋은 기능인 것 같습니다.


답변

이 시도:

set columns=80
autocmd VimResized * if (&columns > 80) | set columns=80 | endif
set wrap
set linebreak
set showbreak=+++

항상 80 개의 열을 원하는 if (&columns > 80) |경우를 제거 할 수 있습니다 .


답변

소프트 랩에 대한 해결책은 없지만 Vim 7.3 (2010-08-15 릴리스)의 :set colorcolumn=80열 표시는 열 80을 강조 표시합니다. 색상은 구문 파일에 따라 다릅니다.

참조 빔은 80 열은 우려를 레이아웃 , :h colorcolumn.


답변

당신은 시도 했습니까 'linebreak'?

        *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
  'linebreak' 'lbr' boolean (default off)
        local to window
        {not in Vi}
        {not available when compiled without the  |+linebreak|
        feature}
If on Vim will wrap long lines at a character in 'breakat' rather
than at the last character that fits on the screen.  Unlike
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
it only affects the way the file is displayed, not its contents.  The
value of 'showbreak' is used to put in front of wrapped lines.
This option is not used when the 'wrap' option is off or 'list' is on.
Note that <Tab> characters after an <EOL> are mostly not displayed
with the right amount of white space.


답변

좋은 방법은 없습니다. @eborisch 답변을 수정하면 임시 변통 setlocal softwrap을 해킹 할 수 있습니다 autocmd. 버퍼에 들어갈 때마다 크기를 조정하고 지역 변수 softwrap가 설정 될 때 특정 길이로 크기를 조정 하면 원하는 동작을 얻습니다.

80 열로 소프트 랩핑한다고 가정하고에 다음을 쓸 수 있습니다 .vimrc.

augroup softwrap
    autocmd VimResized * if (exists('b:softwrap') && &columns > 80) | set columns=80 | endif
    autocmd BufEnter * set columns=999
augroup END

특정 버퍼에 대한 모드를 켜려면 다음 명령을 사용하십시오.

let b:softwrap=1
set columns=80


답변