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


126

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

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

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

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

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


실제로 기본 검색은 어떻게 설정 했습니까?
thethinman

답변:


37

넌 할 수있어

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

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

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

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


불행히도 vim은 창의 크기가 조정되면 열 설정을 유지하지 않습니다. 이로 인해 창이 너무 넓은 경우 80 열로 소프트 랩핑하는 좋은 방법이없는 타일링 창 관리자가 불행한 상황으로 이어집니다.
중력

이것은 작동하지만 끈적 거리지 않습니다. 다음 단계는 원하는 파일 유형에 대해 원하는 새로운 크기로 열을 유지하도록 autocmd를 설정하는 것입니다.
xer0x

1
이것은 당신이 그것을하지 않는다는 것을 확인한다는 정답입니다. 그리고 나는 이것을 위해 터미널 창 크기를 조정하고 싶지 않은 유일한 사람이 아니라고 확신합니다. Vim 이외의 용도로 더 많은 너비를 원합니다.
Sridhar Sarnobat

20

이 시도:

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

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


iTerm 터미널에서 윈도우가 더 작아집니다. 그것이 내 환경에 문제가 있는지 확실하지 않습니다 (자동 크기 조정으로 무언가를하고있는 것을 보았습니다). 그렇지 않으면 바람직하지 않습니다. 그래도 제안 해 주셔서 감사합니다.
Sridhar Sarnobat

autocmd는 나를 위해 완벽하게 작동했습니다 (guake 터미널 사용).
mzcarlos 2013

Alacritty에서 Tmux + NeoVim의 매력처럼 작동합니다.
meh

16

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

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


따옴표는 유효한 URL이 아니므로 의미가 있습니다. 앵커 이름에 잘못된 URL 문자를 포함해서는 안되므로 다른 사이트 개발자의 오류를 수정해서는 안됩니다.
Shadow Wizard는 당신을위한 귀입니다

1
Shadow Wizard는 Markdown을 사용하여 URL에 작은 따옴표를 배치하는 방법에 대해 궁금한 이전 답변을 참조합니다. 그런 다음 ib는 % 27을 사용 하도록 제안 했습니다. 고마워요, ib.
ftvs

최근 80 ~ 지난 열만 강조 표시하는 방법을 발견했습니다.:let w:eighty_column_match = matchadd('ColorColumn', '\%81v.\+', 100)
rampion

colorwidth난 당신이 게시 기뻐요 있도록 것은, 다른 이유로 도움이됩니다.
Sridhar Sarnobat

2

당신은 시도 했습니까 '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.

3
흠 ...하지만 breakat패턴 (길이가 아님)이므로 80에서 소프트 랩을 강제로 적용하는 방법을 알 수 없습니다.
rampion

흠, 나는 총 길이 (와 공백 사이에 공백이 더 있음)가 n 자 이하인 단어와 일치하는 정규 표현식을 만들 수 있는지 궁금합니다.
Shane Creighton-Young

@ ShaneCreighton-Young : ^.{,80}\b소프트 / 확장 탭을 사용하는 사람들을 위해 할 것입니다. vim 정규 표현식이 아닌 perl 정규 표현식입니다.
Mark K Cowan

0

좋은 방법은 없습니다. @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

이것은 단지 내 파일을 횡설수설로 변환합니다.
Suuuehgi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.