gvim의 창 너비를 80 열의 텍스트와 줄 번호를 표시하는 데 필요한 열로 설정하는 방법


9

나는 gvim을

set number

.vimrc에서는 모든 줄 앞에 줄 번호와 공백이 표시됩니다.

문서의 행이 10 줄 미만인 경우 2 열이 필요하고 10, 3 열 이상인 경우 등이 있습니다.

내가 넣으면

set lines=40 columns=80

에서 .gvimrc, 78 개의 코드 열과 linenumber plus pace의 경우 2 또는 77 + 3 등이 표시됩니다.

창 너비를 80 열 + 행 번호를 표시하는 데 필요한 열 수를 설정하고 싶습니다.

동적 일 필요는 없지만 주어진 파일의 줄 수를 읽고 columns그에 따라 설정하고 싶습니다 . (물론, 동적 솔루션은 정말 깔끔하지만 필수는 아닙니다)

답변:


9

~ / .vimrc에서 이것을 시도하십시오 :

au BufRead * let &numberwidth = float2nr(log10(line("$"))) + 2
          \| let &columns = &numberwidth + 80

버퍼를로드 할 때마다 (즉, 파일을 열 때) 가장 큰 행 번호를 표시하는 데 필요한 열 수를 결정하고 이에 따라 'numberwidth'옵션을 설정 한 다음 'columns'를 해당 숫자에 80을 더한 텍스트로 설정하십시오. .


감사! 파일을 열 때 효과적입니다. 탭을 전환 할 때이를 수행하는 방법에 대한 아이디어가 있습니까? 미리 감사드립니다.
Elton Carvalho

1
Vim의 자동 명령 이벤트는에 나열되어 :help autocommand-events있습니다. 그중 하나가 TabEnter있으므로 위의 예제에서 대체 BufRead를 시도하여 BufRead,TabEnter원하는 동작을 제공하는지 확인할 수 있습니다. 나는 그 사건으로 예제를 직접 테스트하지 않았다.
garyjohn

@garyjohn에게 감사드립니다. TabEnter는 예상대로 작동했습니다. 나중에 나는 그 자동 명령 이벤트를 가지고 놀 것입니다. 그들은 유용하다!
Elton Carvalho

1
@ david_nash : 'numberwidth'파일의 줄 수에 따라 로그 만 증가하므로 가로 공간을 늘려서 사용할 수 있다면 'number'제한에 대해 걱정할 필요가 없습니다.
garyjohn

1
@JonathanHartley : 삼항 연산자 ( :help expr1) 또는 if / endif (예 :)를 사용하여 이를 쉽게 제어 할 수 있습니다 :help options-in-terminal. 문제가 변경되면 열 'number'이 변경됩니다. OptionSet 자동 명령 이벤트를 사용하려고 생각했지만 :help OptionSet이 이벤트를 처리하는 동안 옵션을 재설정하는 것은 좋지 않습니다.
garyjohn

2

나는 사용한다

set lines=24 columns=84

내 $ HOME / .gvimrc에서 원하는 것을 제공합니다. 나는 999 줄보다 긴 파일을 거의 가지고 있지 않으므로 나에게 효과적입니다.


그것은 내가하고있는 일이지만 정확히 80 열의 텍스트를 유지하는 것이 좋습니다. 한 줄에 81 개의 문자로 끝나는 것을 막을 수 있기 때문에 큰 문제는 아니지만 피할 수는 있습니다.
Elton Carvalho

2

숫자 너비를 5로 설정 한 다음 열을 85 (80 + 5)로 설정했습니다 .0 줄에서 백만 줄까지의 파일에 적합합니다.

다음은 ~ / .vimrc 파일 (기본)에 입력해야 할 내용입니다.

set numberwidth=5  "Good for files upto a million lines
set columns=85
set nu

줄 번호가 기본 '% d'형식 대신 '% 5d'(5는 위의 너비)로 표시되어 줄 번호 앞에 약간의 부동산을 낭비하지만 일관성을 유지하는 것을 볼 수 있습니다.


슈퍼 유저에 오신 것을 환영합니다. 매우 오래된 질문에 대한 답변을 게시했습니다. 그렇게하는 데 아무런 문제가 없지만 응답이 없을 수도 있습니다.
CharlieRB 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.