[vim] Vim 80 열 레이아웃 문제

Vim에서 80 열 표시를하는 방식이 올바르지 않은 것 같습니다 set columns=80. 때때로 나는 또한 대안으로 set textwidth라인 오버플로를보고 기대할 수 있기를 원합니다 set columns.

이것은 일부가 불행한 부작용 :

  1. set number줄 번호가 다른 파일 사이를 분할하는 것을 두려워 할 수 없습니다 . 즉, <100 개의 줄 파일과> = 100 개의 줄 파일은 set columns추가 숫자 표시에 사용되는 추가 열 때문에 두 개의 다른 값 이 필요 합니다.
  2. 또한 창을 세로로 나누지 않고 새로운 (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),",")

결과:

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