development

버퍼와 같은 Vim의 탭 사용

big-blog 2020. 2. 29. 15:25
반응형

버퍼와 같은 Vim의 탭 사용


나는 (와 빔에 탭을 사용할 수있는 기능 살펴 보았다 :tabe, :tabnew많은 파일을 숨겨진 버퍼에서 같은 창에서 열립니다 가진 내 현재의 관행에 대한 대체 등).

열려있는 모든 개별 파일이 항상 자체 탭에 있도록하고 싶습니다. 그러나 이것에 방해가되는 것들이 있습니다. 이 문제를 어떻게 해결합니까?

  1. 명령 이 다른 파일의 위치를 좋아 gf하고 ^]다른 파일로 이동하면 파일이 현재 탭의 새 버퍼에서 열립니다. 이러한 모든 종류의 명령을 사용하여 새 탭에서 파일을 열거 나 파일이 이미 열려있는 경우 기존 탭으로 전환 할 수 있습니까?

  2. 버퍼를 전환 할 때 사용할 수 :b <part of filename><tab>있으며 기존 버퍼의 파일 이름을 완성합니다. <part of filename>시작 대신 파일 이름의 중간이 될 수도 있습니다. 탭 전환에 해당하는 것이 있습니까?


멈춰 멈춰

이것은 Vim의 탭이 사용되는 방식이 아닙니다. 사실, 그들은 이름이 잘못되었습니다. 더 좋은 이름은 "viewport"또는 "layout"입니다. 이것이 탭의 형식이기 때문입니다 . 기존 모든 버퍼 의 창 레이아웃이 다릅니다 .

Vim을 1 tab == 1 buffer로이기는 것은 무의미한 연습입니다. 빔은 알거나 관심과 그것을 모든 명령 - 인에 quickfix 버퍼 (사용 특히, 무엇이든 그것을 존중하지 않는 :make, :grep그리고 :helpgrep행복하게 탭을 무시합니다 마음에 봄이하는 것들) 그리고 당신이 정지 할 수있는 아무것도를 그.

대신 :

  • :set hidden
    이 세트가 아직 없으면 설정하십시오. vim은 지구상의 다른 모든 다중 파일 편집기처럼 작동합니다. 창에서 보이지 않는 버퍼를 편집 할 수 있습니다.
  • 사용 :bn, :bp, :b #, :b name, 및 ctrl-6버퍼 전환합니다. 나는 ctrl-6나 자신을 좋아 한다 (혼자 이전에 사용 된 버퍼로 #ctrl-6전환 하거나 버퍼 번호로 전환 #).
  • :ls버퍼 또는 MiniBufExpl 또는 BufExplorer 와 같은 플러그인을 나열하는 데 사용하십시오 .

여기 파티에 늦었지만이 목록에서 다음을 보지 못했다는 것에 놀랐습니다.

:tab sball -열린 버퍼마다 새 탭이 열립니다.

:help switchbuf-버퍼 전환 동작을 제어합니다 :set switchbuf=usetab,newtab. 버퍼가 열려 있으면 기존 탭으로 전환하거나 그렇지 않으면 새 탭을 만들어야합니다.


Vim :help window은 혼란 "탭과 버퍼"를 잘 설명합니다.

버퍼는 파일의 메모리 내 텍스트입니다.
윈도우는 버퍼의 뷰포트입니다.
탭 페이지는 창의 모음입니다.

vim에서 버퍼를 사용 하여 여러 파일을 열 수 있습니다 . 다른 편집기 (예 : notepad ++)에서는 탭으로이 작업이 수행되므로 vim의 이름 탭이 잘못 될 수 있습니다.

Windows 는 작업 공간을 분할하고 여러 파일 (버퍼)을 한 화면에 함께 표시하기위한 것입니다. 다른 편집기에서는 여러 GUI 창을 열고 바탕 화면에서 재 배열하여이 작업을 수행 할 수 있습니다.

마지막으로이 비유에서 vim의 탭 페이지 는 여러 데스크탑에 해당합니다. 즉, 창의 재배치가 다릅니다.

vim이 help: tab-page설명 했듯이 탭 페이지를 사용하면 파일을 임시로 편집하고 싶지만 현재 창 및 버퍼 레이아웃에서 아무것도 변경하지 않으려는 경우에 사용할 수 있습니다. 이 경우 특정 파일을 편집하기 위해 다른 탭 페이지를 사용할 수 있습니다.

물론 많은 탭 페이지 나 창에 동일한 파일을 표시하면 동일한 작업 사본 (버퍼)이 표시됩니다.


여기에있는 다른 답변과 달리 원하는대로 탭을 사용할 수 있다고 말합니다. vim은 사전 정의 된 매개 변수에 따라 작업하도록 강요하지 않고 다목적이며 사용자 정의가 가능하도록 설계되었습니다. 우리 모두 프로그래머가 다른 사람들에게 우리의 "윤리"를 부과하는 것을 어떻게 좋아하는지 알기 때문에이 성과는 확실히 주요한 특징입니다.

<C-w>gf버퍼 gf명령 과 동일한 탭 입니다. <C-PageUp><C-PageDown>탭 사이를 전환됩니다. Byobu에서이 두 명령은 작동하지 않지만 Byobu / tmux 외부에서는 작동합니다. 대안은 gtgT입니다.) <C-w>T현재 창을 새 탭 페이지로 이동합니다.

vim이 중복 탭을 생성하는 대신 가능한 경우 기존 탭을 사용하도록하려면 :set switchbuf=usetab.vimrc 파일에 추가 하십시오. 컴파일 오류를 표시하는 QuickFix 명령이 별도의 탭에서 열리도록 newtab목록 ( :set switchbuf=usetab,newtab)에 추가 수 있습니다 . 내가 선호 split분할 창에서 컴파일 오류를 여는 대신.

로 마우스 지원을 활성화 :set mouse=a한 경우 탭을 클릭하여 탭과 상호 작용할 수 있습니다. +기본적으로 새 탭을 만드는 버튼 도 있습니다 .

탭의 설명서를 보려면 :help tab-page일반 모드로 입력 하십시오. 그런 다음을 사용하여 창을 탭으로 이동하는 방법을 연습 할 수 있습니다 <C-w>T. 명령 목록이 많습니다. 일부 창 명령은 탭과 관련이 있으므로을 통해 해당 설명서를 볼 수도 있습니다 :help windows.

추가 : 2013-12-19

별도의 탭에서 각 파일과 함께 vim에서 여러 파일을 열려면을 사용하십시오 vim -p file1 file2 .... 나처럼 항상 -p추가하는 것을 잊어 버린 경우 vim이 일반적인 명령 줄 옵션 구문 분석 규칙을 따르므로 끝에 추가 할 수 있습니다. 또는에 bash 별명 맵핑 vim추가 할 수 있습니다 vim -p.


나는 같은 문제에 부딪쳤다. 탭이 버퍼처럼 작동하기를 원했으며 결코 탭을 관리하지 못했습니다. 마지막으로 해결 한 해결책은 버퍼가 탭처럼 동작하도록하는 것입니다!

Mini Buffer Explorer 라는 플러그인을 확인하고 설치하고 구성하면 기능을 잃지 않으면 서 탭과 동일한 방식으로 버퍼로 작업 할 수 있습니다.


이것은 Vim에 익숙하지 않고 다른 텍스트 편집기 (내 경우 Sublime Text)에서 온 사람들에게 답입니다.

나는이 모든 대답을 읽었으며 여전히 명확하지 않았습니다. 당신이 그들을 통해 읽는다면 충분한 일이 이해되기 시작하지만, 질문 사이를왔다 갔다하는 데 몇 시간이 걸렸습니다.

첫 번째는 다른 사람들이 설명했듯이

탭 페이지는 , 같은 많은 소리 탭을 , 그들은 탭처럼 행동하고 다른 대부분의 GUI 편집기의 탭과 매우 비슷하지만, 그들은 아니에요. Vim에 내장 된 나쁜 정신 모델이라고 생각합니다. 불행히도 탭 페이지에있는 여분의 힘을 흐리게합니다.

내가 이해 한 첫 번째 설명은 @crenate의 답변 에서 나온 입니다. 여러 데스크톱과 동일하다는 것입니다. 이와 관련하여 두 개의 데스크탑 만 열었지만 각 GUI 창에는 많은 GUI 창이 열려 있습니다.

다른 편집기 / 브라우저와 비슷하다고 말하고 싶습니다.

  1. 탭 그룹
  2. 숭고한 텍스트 작업 공간 (예 : 프로젝트에있는 열린 파일 목록)

이러한 파일을 볼 때 CSS 파일, HTML 파일 및 JS 파일을 다른 탭 페이지에서 쉽게 묶을 수있는 파일 세트 (버퍼)를 쉽게 그룹화 할 수있는 기능을 활용할 수 있습니다. 실제로는 정말 대단합니다.

혼란스러운 다른 설명

뷰포트

이것은 나에게 이해가되지 않습니다. 사전 용어정의 되어 있지만 뷰포트 에서 Vim 창을 언급하는 것을 들었습니다 :help window. 뷰포트는 Sublime Text, Visual Studio, Atom, Notepad ++와 같은 편집기와 관련하여 내가 들어 본 용어가 아닙니다. 사실 나는 탭 페이지를 사용하기 시작할 때까지 Vim에 대해 들어 본 적이 없습니다.

여러 데스크탑과 같은 탭 페이지를 보면 데스크탑을 단일 창으로 언급하는 것이 이상하게 보입니다.

작업 공간

이 가능성이 더 의미의 사전 정의 입니다 :

임시 사용을위한 메모리 저장 시설.

버퍼 그룹을 저장하는 곳과 같습니다.

처음에는 프로젝트에서 연 모든 파일의 목록 인 Sublime Text의 작업 공간 개념 처럼 들리지 않았습니다 .

숭고한 작업 공간 파일-열린 파일 및 각각의 수정 사항과 같은 사용자 별 데이터가 들어 있습니다.

그러나 그것에 대해 더 많이 생각하면 실제로 동의합니다. Vim 탭 페이지를 Sublime Text 프로젝트처럼 생각하면 각 프로젝트에서 하나의 파일 만 열어 프로젝트간에 계속 전환하는 것이 이상하게 보일 것입니다. 따라서 탭 페이지를 사용하여 하나의 파일 만 여는 것이 왜 이상한가?

창문 컬렉션

:help window탭 페이지에이 방법을 의미합니다. 또한 수많은 다른 답변도 동일한 개념을 사용합니다. 그러나 vim 창이 무엇인지 알기 전에는 모래 위에 성을 짓는 것과 같이 많이 사용되지 않습니다.

위에서 언급했듯이 vim 창은 뷰포트와 동일 하며이 linux.com 기사 에서 잘 설명되어 있습니다 .

Vim에서 실제로 유용한 기능은 하나 이상의 파일 사이에서 볼 수있는 영역을 분할하거나 동일한 파일의 두 비트를 더 쉽게 볼 수 있도록 창을 분할하는 기능입니다. Vim 문서는 이것을 뷰포트 또는 창으로 상호 교환 가능하게 지칭합니다.

: help 주제를 사용하거나 F1 키를 눌러 Vim의 도움말 기능을 사용한 적이 있다면이 기능에 이미 익숙 할 것입니다. 도움말을 입력하면 Vim은 뷰포트를 분할하고 상단 뷰포트에서 도움말 문서를 열고 하단 뷰포트에서 문서를 열어 둡니다.

탭 페이지가 버퍼 모음 대신 창 모음이라고 불리는 것이 이상합니다. 그러나 두 개의 개별 탭 페이지가 각각 동일한 버퍼를 가리키는 여러 개의 창으로 각각 열릴 수 있다고 생각합니다.


도움말 탭 : vim이 원하는 방식으로 작동하려는 것처럼 보이지 않는 도움말 탭 ...

버퍼는 여러 탭에서 공유되므로 특정 버퍼 만 특정 탭에만 표시되도록 잠글 수는 없습니다.

그래도 좋은 생각입니다.

다중 그놈 터미널과 같은 탭을 지원하는 터미널을 사용한 다음 각 터미널 탭에서 vim 인스턴스를 실행하면 원하는 효과를 얻을 수 있습니다. 완벽하지는 않지만 ...


  • .vimrc에서 gf로 한 것처럼 일반적으로 버퍼를 조작하는 탭을 조작하는 명령을 매핑 할 수 있습니다.

    map gf :tabe <cfile><CR>
    

    나는 당신이 [^와 같은 것을 할 수 있다고 확신합니다

  • 나는 vim이 탭을 위해 이것을 지원하지 않는다고 생각한다 (아직). gt와 gT를 사용하여 다음 탭과 이전 탭으로 각각 이동합니다. Ngt를 사용할 수도 있습니다. 여기서 N은 탭 번호입니다. 필자가 가지고있는 한 가지 기본 사항은 기본적으로 탭 번호가 탭 줄에 표시되지 않는다는 것입니다. 이 문제를 해결하기 위해 .vimrc 파일 끝에 몇 가지 함수를 넣었습니다 (길이가 길고 형식이 잘못되어 붙여 넣지 않았습니다).


BufExplorer 플러그인과 몇 가지 매크로를 사용하여 탭과 같은 버퍼를 사용 합니다.

" CTRL+b opens the buffer list
map <C-b> <esc>:BufExplorer<cr>

" gz in command mode closes the current buffer
map gz :bdelete<cr>

" g[bB] in command mode switch to the next/prev. buffer
map gb :bnext<cr>
map gB :bprev<cr>

BufExplorer를 사용하면 상단에 탭 막대가 없지만 화면의 공간을 절약 할 수 있으며 무한한 수의 파일 / 버퍼를 열 수 있으며 버퍼 목록을 검색 할 수 있습니다 ...


버퍼가 탭처럼 작동하게하려면 tabline plugin을 확인하십시오 .

단일 창을 사용하고 상단에 줄을 추가하여 탭을 시뮬레이션합니다 (버퍼 목록 만 표시). 이것은 탭이 GVim에서만 지원되었지만 명령 줄 vim에서는 지원되지 않았던 오래 전에 나왔습니다. 버퍼로만 작동하기 때문에 모든 것이 vim의 나머지 부분과 잘 통합됩니다.

참고 URL : https://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers



반응형