vim의 분할 구분자가 전체 열 너비보다 작을 수 있습니까?


21

나는 타일 창 관리자 (굉장한) + 터미널 멀티플렉서 (tmux) + vim 내부의 분할을 사용합니다. 나는 창 장식이 전혀 없기 때문에 프로그램의 내용이 그것을 제공하지 않으면 그들 사이에 시각적 인 분할이 전혀 없습니다. 어쨌든 여러 모니터와 그룹 작업을 화면별로 사용 ​​하므로이 패러다임에 상당히 익숙합니다. 두 개의 창문이 나란히있을 이유가 없다면 처음에는 없을 것입니다.

그러나 이것은 시각적으로 가장 명백한 분할이 의미 상 가장 중요하지 않은 약간의 시각적 불일치를 생성합니다.

  • Xorg 창‹|›창 = 전혀 없음
  • Tmux 창‹|›pane = 1px 구분선
  • Vim split‹|›split = 1 자 너비의 열

다음은 나란히있는 창, 창 및 vim 분할을 보여주는 샘플입니다.

창 분할 및 분할

전체 해상도 버전을 클릭하지 않아도 보이는 흰색 구분선은 화면에서 가장 큰 분할 선인 vim 창입니다. (vim 세션의 오른쪽에있는 회색 열은 실제로 80 번째 열 강조 표시이며, 종종 그 크기로 작업하지만 모든 종류의 구분선은 아닙니다.)

분할에서 그려진 문자를 변경하거나 색 구성표 대비를 줄이는 방법을 알고 있습니다. 내가하고 싶은 것은 하나가 아닌 열 사이에 그려지기 때문에 너비를 차지하지 않는 tmux와 동일한 분할 막대를 사용하는 것입니다. 터미널 기반 vim에서 가능합니까? 그놈? 네오 빔? 시각적으로 눈에 거슬리지 않는 분리막을 만들면서 분배기 열을 완전히 끌 수 있습니까?

추신 시각적으로 유사한 구분 기호를 사용하는 이유는 동일한 키 바인딩을 사용하여 tmux 창과 vim 분할을 탐색하기 때문입니다. 동일한 키가 서로 원활하게 탐색하므로 시각적 경계가 동일한 경우에만 의미가 있습니다.

답변:


32

당신은 tmux에 대해 틀 렸습니다. Vim을 포함한 모든 터미널 기반 프로그램과 마찬가지로 셀 내부 에만 물건을 가져옵니다 . 즉, Vim과 tmux는 모두 같은 방법으로 세로 테두리를 그립니다. 파이프와 같은 문자 만 사용합니다.

Tmux는 기본적으로 ( U+2502)를 사용하고 Vim은 |( U+007C)를 사용합니다 .

Vim에서 동일한 구분 기호를 원하면 동일한 문자를 사용할 수 있습니다.

set fillchars+=vert:│

색 구성표는 세로 분할의 배경색을 설정합니다. 이 경우 색 구성표에서 배경색을 직접 제거 할 수 있습니다.

hi VertSplit ctermbg=NONE guibg=NONE

나는 이 결론 에 대해 1 분 정도 이겼지 만 어쨌든 고마워. 왜 내가 다르게 가정했는지 모르겠습니다. 나는 문자 공간의 가장자리에 구분 기호를 오버레이하기 위해 마법을 결합한 일종의 유니 코드 문자를하고 있다는 인상을 받았다고 생각하지만, 나는 그것이 의식적으로 얼마나 어리석은지를 생각한다는 것을 깨달았습니다.
Caleb

1
필자의 경우 필요한 것은 기본 설정 hi VertSplit cterm=NONE이기 때문 이었습니다 reverse.
Lloeki

우연히 tmux 구분 기호를 '│'에서 '/'로 변경하는 방법을 알고 있습니까? @romainl
클라우스

@EnanAjmain IIRC 소스 코드에서 tmux 구분 기호를 찾았습니다. 나는 그것에 대한 옵션이 있다고 생각하지 않지만 TMUX 전문가와는 거리가 멀므로 매뉴얼을 확인해야합니다.
romainl

@romainl 당신이 옳다고 생각합니다. 내가 tmux를 바꿀 수 있었던 주요한 것은 소스 코드를 해킹해야했다.
클라우스

5

내 자신의 스크린 샷에서도 tmux는 마법을 사용하지 않으며 분할은 여전히 ​​단일 문자 너비 열입니다. 덜 눈에 띄는 시각적 효과는 vim의 ASCII 기본값보다 덜 깔끔하고 밝은 배경색이없는 유니 코드 상자 그리기 문자를 사용하는 것입니다.

vim에서 rc 파일에 다음 줄을 추가하면 거의 같은 효과가 나타납니다.

" Set split separator to Unicode box drawing character
set encoding=utf8
set fillchars=vert:│

" Override color scheme to make split the same color as tmux's default
autocmd ColorScheme * highlight VertSplit cterm=NONE ctermfg=Green ctermbg=NONE

의 사용 autocmd을 보장 효과에 하이라이트를 통해 타고 숙박 당신은 색상 체계를 전환하는 경우 있음. 일부 색 구성표에이 색 그룹에 적절한 값이 있으므로이 동작을 원하거나하지 않을 수 있습니다.

또한 cterm=NONE이 값을로 설정하는 일부 색 구성표를 reverse재정 의하여 사용하려는 fg / bg 값을 혼동해야합니다.


4

아니요, 이것은 Vim에서 수행 할 수 없으며 GVIM에서 구현하기가 매우 어려울 수 있습니다.

Vim은 터미널에서 사용되는 셀 기반 주소 지정을 고수합니다. 버퍼 내에서 이는 j/로 일관된 수직 탐색에 중요합니다 k. 셀 기반 x 및 y 좌표에 의한 이러한 주소 지정은 Vim의 구현에 깊이 뿌리 박혀 있으므로 극복하기가 매우 어렵다고 생각합니다.

참고 사항 :help design-not:

  • Vim은 모든 플랫폼에서 일관성이 떨어지는 비용으로 멋지게 보이는 멋진 GUI 편집기가 아닙니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.