ZyX가 #vim에서 말했듯이,이 질문은 "Vim 전문가들이 왜 따뜻한 것보다 맛있는 것을 선호합니까?" .
"Vim 전문가"는 탭보다 버퍼를 선호하지 않습니다. 버퍼를 파일 프록시로 사용하고 탭 페이지를 작업 영역으로 사용합니다. 버퍼와 탭 페이지는 서로 다른 목적을 가지므로 서로 선호하는 것은 의미가 없습니다.
버퍼와 탭의 문제 는 독립적 인 사실의 조합으로 인한 혼란 중 하나입니다 .
대부분의 "현대"텍스트 편집기 및 IDE는 탭 은유를 사용하여 로드 된 파일을 나타냅니다. 이 은유는 정보 시스템의 역할을하며 사용자에게 열려있는 파일과 상태를 표시하고 대화 형 장치로서 사용자가 열린 파일을 조작 (재주문, 선택, 닫기 등) 할 수 있습니다. 많은 한계에도 불구하고 탭은 어디에나 있고 사람들은 그들에게 익숙 하며 어디에서나 기대 합니다.
Vim 은 사용자가 임시 "작업 공간"을 만들 수있는 방법으로 7.0의 탭 페이지 를 소개 했습니다. 기능, 특정 옵션, 특정 명령 또는 :help
섹션에 탭 페이지를 파일 프록시로 사용할 수 있거나 사용할 것을 제안하는 것은 없습니다.
물론 "탭 페이지" 의 이름 과 모양을 제외하고는 많은 혼란을 초래합니다.
:set hidden
기본적으로 비활성화되어 있고 찾기가 쉽지 않은을 사용 하지 않으면 Vim은 현재 버퍼를 쓰거나 변경 사항을 포기하지 않고 다른 버퍼로 전환 할 수 없습니다. 이 옵션을 모르는 새로운 사용자는 무거운 창 사용 또는 탭 페이지와 같은 가장 가까운 "탭과 같은"기능으로 전환 할 수밖에 없습니다.
"탭 페이지"는 특히 문서를 읽는 것이 시간 낭비라는 아이디어가 지배하는 시대에 그 기능에 대한 불행한 이름 선택입니다.
Vim에서 탭 페이지는 창 위에 구축 된 추상화이며 버퍼 자체 위에 구축 된 추상화입니다. 각각의 새로운 레벨은 유용한 기능을 추가하지만 작업 흐름을 제한합니다.
"버퍼 웨이"
버퍼 기반 워크 플로를 사용하면 작업중인 파일이 단일 차원을 따라 배포됩니다. 당신은 당신의 버퍼를 순환 할 수 있습니다, 당신은 그것의 이름의 일부 (완료) 또는 숫자를 입력하여 특정 버퍼에 액세스 할 수 있습니다, 당신은 버퍼 사이를 번갈아 할 수 있습니다, 당신은 매우 쉽게 대상을 지정할 수 있습니다. 기본적으로 마찰이 없습니다.
8 개의 버퍼가 열리고 하나만 표시됩니다.
번호로 전환 :
이름으로 전환 :
버퍼는 Vim의 파일 프록시입니다. 파일 측면에서 생각하면 버퍼 측면에서 생각합니다.
"창문 방법"
당신은 단지 버퍼를 사용하면 윈도우 기반의 워크 플로우와 함께, 귀하의 "파일은"모두가 마찬가지로 동일한 단일 "가상"차원을 따라 분포 하고 다른 두 "실제"차원에서. 그러나 이러한 차원이있는 데카르트 공간은 거의 완전히 분리되어 있습니다. 다른 버퍼로 이동하는 것은 여전히 "다른 파일로 이동"을 의미하지만 다른 창으로 이동하는 것은 아닙니다. 원하는 파일에 해당하는 버퍼가 해당 창에 표시 될 수 있지만 다른 탭 페이지 또는 다른 탭 페이지에 표시되거나 전혀 표시되지 않을 수도 있습니다.
Windows에서는 열린 파일 간 탐색이 및로도 너무 복잡하거나 단순 'switchbuf'
해 :sb
집니다. 대부분 기본적으로 동일한 것에 대해 두 가지 명령 세트를 사용해야하기 때문에 버퍼에 액세스해야합니다.
아래 설명과 같이 Windows를 사용하지만 다른 사람의 워크 플로에서 버퍼를 대체하는 데 필요한 것은 없습니다.
여기에 Vim colorscheme을 작업 중입니다. 두 개의 창은 동일한 버퍼의 다른 뷰입니다. 상단은 색상 표에 사용 된 색상 코드 표와 함께 참조로 사용되며 하단은 내가 작업하는 곳입니다.
Windows는 파일 프록시로 설계되지 않았으며 파일 프록시로 만들 수 없습니다. "컨테이너"또는 "뷰포트"는 버퍼로보기를 제공하도록 설계되었습니다. 그 이상도 이하도 아닌.
"탭 방식"
탭 기반 워크 플로를 사용하면 기본적으로 Vim의 탭 페이지의 특성을 완전히 무시하면서 이전 편집기에서 익숙했던 사용자 경험을 모방하려고합니다. 이 전략이 일반적으로 매우 생산적이지 않다는 사실을 잊어 버린 경우 Windows와 마찬가지로 Vim 이 많은 유연성 을 잃지 않으면 서 "하나의 파일 = 하나의 탭"패러다임을 고수하는 것도 불가능 합니다.
여전히 위와 동일한 파일을 사용하여 작업 한 결과 표선은 실질적인 이점이없는 상당한 공간을 차지합니다. 내 모든 파일과 모든 탭이 호출 javascript*.vim
되어 3gt
올바른 위치에있게되고 이름으로 특정 탭에 도달하는 것은 불가능하고 확신 할 수 없습니다 . 또한 레이블이 매우 유용하지만 완벽하게 논리적 일 수 있다는 사실에 덧붙여서 [Quickfix List]
... 파일 / 버퍼를 탭 페이지에 묶는 실질적인 방법이 없기 때문에 기본적으로 탭 페이지 사이를 탐색하는 실용적인 방법은 하나뿐입니다. / buffers / files : 사이클링.
그리고 예, 내 탭은 8 개의 탭으로 가득 차 있습니다 .20이 있는지 상상해보십시오!
8 개의 탭 페이지에서 8 개의 버퍼가 열립니다 (잘못된)
두 가지 특정 작업을위한 두 개의 탭 (오른쪽)
탭 페이지는 하나 이상의 창을 포함하도록 설계된 "컨테이너"또는 "뷰포트"이며 버퍼 자체를 포함하도록 설계된 "컨테이너"입니다.
결론적으로
"Vim 전문가"(내가 하나 인 것처럼 말할 수 있다고 가정하자) 는 탭보다 버퍼를 선호하지 않습니다. Vim은 설계된대로 디자인되어 있고 그 디자인에 완벽하게 익숙합니다.
"Vim 전문가"에는 2, 30 또는 97 개의 버퍼가로드되어 있으며 공간 분포를 처리 할 필요가없는 것에 매우 만족합니다.
두 파일을 비교하거나 현재 버퍼의 한 부분에서 작업하면서 다른 버퍼를 참조로 유지해야하는 경우 "Vim 전문가"는 창을 사용합니다.
현재 시각을 그대로 유지하면서 프로젝트의 다른 부분에서 잠시 작업해야하는 경우 "Vim 전문가"는 새로운 탭 페이지를로드합니다.