development

Vim 80 열 레이아웃 문제

big-blog 2020. 2. 20. 23:34
반응형

Vim 80 열 레이아웃 문제


Vim에서 80 열 표시 방식이 잘못되었다고 생각 set columns=80합니다. 때때로 나는 또한 대안으로 set textwidth라인 오버플로를보고 기대할 수 있기를 set columns원합니다.

이것은 불행한 부작용이 있습니다 set number. 줄 번호가 다른 파일을 분할하는 것을 두려워 할 수 없습니다 . 즉, <100 개의 줄 파일과> = 100 개의 줄 파일은 set columns추가 숫자 표시에 사용되는 추가 열 때문에 두 개의 다른 이 필요 합니다. 또한 창을 세로로 나누지 않고 새 (g) Vim 세션을 시작하여 창 관리자의 클립 보드를 사용해야합니다. 창을 열거 나 닫을 때마다 vsplit강제 set columns로 새 세션을 시작하는 것이 번거 로움이 없습니다.

set numbers, 수직 분할 등 을 원할 때 80 자 표시를 어떻게 처리 합니까?


내 .vimrc 에이 설정이 있습니다.

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

이것은 80 열 제한을 초과하는 텍스트에 대해 미묘한 빨간색으로 배경을 강조 표시합니다 (GUI 모드에서는 미묘하지만 터미널 모드에서는 덜 중요합니다).


vim 7.3부터 set colorcolumn=80( set cc=80짧게) 사용할 수 있습니다 .

이전 버전에서는이를 지원하지 않으므로 .vimrc대신 다음을 사용합니다.

if exists('+colorcolumn')
  set colorcolumn=80
else
  au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif

옵션 에 대한 온라인 설명서colorcolumn 도 참조하십시오 .


더 짧은 방법 :

match ErrorMsg '\%>80v.\+'

나는 선호한다:

highlight ColorColumn ctermbg=gray
set colorcolumn=80

사이먼 하워드의 대답은 훌륭합니다. 그러나 /\%81v.\+/열 81을 초과하는 탭을 강조 표시하지 못합니다. 그래서 VIM 위키 에서 찾은 내용 과 HS의 색상 선택을 기반으로 약간의 조정을 수행했습니다 .

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/

그리고 이제 VIM은 열 80을 초과하는 모든 것을 강조 할 것입니다.


여기에 이미지 설명을 입력하십시오

최소한의 최고의 접근 방식. 너무 긴 줄의 79 번째 문자 만 강조 표시됩니다. 몇 가지 일반적인 문제를 극복합니다. 새 창에서 작동하고 넘친 단어가 올바르게 강조 표시됩니다.

augroup collumnLimit
  autocmd!
  autocmd BufEnter,WinEnter,FileType scala,java
        \ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey
  let collumnLimit = 79 " feel free to customize
  let pattern =
        \ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
  autocmd BufEnter,WinEnter,FileType scala,java
        \ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END

참고 : FileType scala,java이것은 Scala 및 Java 소스 파일로 제한됩니다. 아마도 이것을 사용자 정의하고 싶을 것입니다. 생략하면 모든 파일 형식에서 작동합니다.


또한 80 개의 한계를보기 위해 선을 그릴 수 있습니다.

let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")

결과:

여기에 이미지 설명을 입력하십시오


지정된 범위를 벗어나는 첫 번째 문자 만 표시하는 좋은 방법입니다.

highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr

Damian Conway의 이야기에서 .


최신 버전의 vim은 :set numberwidth=x값을 허용 하여 행 번호 표시의 너비를 설정합니다. 나는 실제로 접는 등을 사용하지 않으므로 그것에 대해 알지 못합니다. 얇은 세로선을 그리는 것은 콘솔 응용 프로그램의 기능을 뛰어 넘습니다. GVim은 이것을 허용 할 수 있습니다 (사용하지 않으므로 주석을 달 수 없습니다).


널 세트로 남겨 두는 솔루션 세트에 제한을 두는 것이 두렵습니다.

를 사용 :set textwidth=80하면 줄 한도를 쉽게 확인할 수 없다는 제외하고 언급 한 모든 문제가 해결 됩니다. 이 경우 :set ruler상태 표시 줄에서 x, y 위치 표시를 활성화하여 현재 열을 확인할 수 있습니다.

그 외에도, 당신에게 무엇을 말 해야할지 모르겠습니다. 숫자 열을 잃어 버리고 열을 접고 나누는 것이 부끄러운 일 :set columns=80입니다.


당신은 이것을 시도 할 수 있습니다 :

au BufWinEnter * if &textwidth > 8
\ | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1)
\ | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.\+', &textwidth), -1)
\ | endif

이렇게하면 모든 버퍼에 두 개의 하이라이트가 설정됩니다. 하나 &textwidth는 설정 하기 전에 8 개의 열에있는 문자에 대한 것이고 다른 하나는 그 열에없는 문자에 대한 것입니다. 그렇게하면 어느 정도의 기대감을 갖게됩니다. 물론 당신이 (예를 들어 열에서 구문 강조 표시의 손실로 지불하는) 예상을 원한다면 다른 너비를 사용하도록 조정할 수 있습니다.


글 : : help 열을 보면 실제로 엉망이되지는 않습니다.

콘솔에서는 일반적으로 콘솔 설정에 의해 결정됩니다 (즉, 자동 감지). GUI에서 gvim 창의 너비를 결정합니다 (및 결정).

따라서 일반적으로 콘솔과 창 관리자가 작업을 수행하도록합니다. set columns

"라인 오버플로 참조 및 예상"의 의미를 잘 모르겠습니다. EOL을 대략 열 ​​80에 삽입하려면 set textwidth또는 set wrapmargin;를 사용하십시오 . 소프트 랩을 원할 경우 (즉, 줄 바꿈은되지만 실제 EOL은 없음) set linebreakand으로 재생하십시오 set showbreak.


이것은 왼쪽 필드에 없지만 줄 번호가있는 경우 현재 분할을 80 자로 크기를 조정하는 멋진 작은 맵입니다.

" make window 80 + some for numbers wide  
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr> 

실제 텍스트의 80자를 허용하도록 창 크기를 설정할 수 있습니다. 그래도 여전히 세로 분할에서는 작동하지 않습니다.

let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)

상대 숫자의 경우 vim 7+, 7.3이 필요합니다.

참고 URL : https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns



반응형