vim의 새 탭에서 기존 버퍼를 어떻게 편집합니까?


51

다음과 같이 vim을 시작했다고 가정하십시오.

vim foo bar

이제 각 파일을 자체 탭에 추가하기로 결정했습니다. vim을 종료하고 -p옵션을 명령 줄에 추가하지 않고 그렇게 할 수 있습니까?


많은 사람들이 아래 의 liuyang1의 답변에tabe % 언급되어 있을 것 입니다.
Mateusz Piotrowski

1
@MateuszPiotrowski처럼 난에서 언급 된 그 대답이 댓글 , :tabe %유효한 파일 경로가없는 버퍼 작동하지 않습니다. :tab sb매번 작동합니다.
JoL

답변:


30

그런 식으로 vim을 시작하면 vim 클라이언트가 나타나지 않고 텍스트 편집기가 터미널 또는 cmd 프롬프트를 사용하고 있습니다. 두 파일은 서로 다른 두 개의 버퍼에 있습니다. :ls버퍼를 나열하는 데 사용하십시오 .

:ls
  1 %a   "foo"                 line 6
  2      "bar"             line 0

% a는 활성 버퍼입니다. 당신이 사용할 수있는 :b22 버퍼 또는 사용으로 전환하려면 :bn다음 또는주기 :bp이전에 대해. 가로로 분할되는 (CTRL-W) 대신 (CTRL-W v)를 사용하여 창을 세로로 분할하는 것이 좋습니다.

2 개의 파일이로드되어 있고 탭이없는 경우 (아직) :tabnew새 탭 유형으로 할 수 있습니다.:b2

버퍼를 항상 자신의 탭에로드하려면 이 기사를 확인 하십시오 .


예,하지만 탭이 필요합니다.
innaM

따라서 이미 cmd / 터미널 쉘이 아닌 vim 클라이언트에 파일이있는 방식으로 vim을 시작 했습니까?
DaveParillo

1
무슨 말인지 잘 모르겠습니다. 위에서 설명한 것처럼 쉘을 사용하여 vim을 시작한 다음 실행중인 vim을 가지고 있습니다.
innaM

아! 버퍼가 탭에 국한되지 않는다는 것을 실제로 이해하지 못했습니다. 나는 항상 각 탭마다 자체 버퍼 목록이 있다고 생각했습니다.
innaM

내 컴퓨터 vim에서 셸 내에서 편집기를 시작합니다. vim 그래픽 사용자 인터페이스를 얻으려면 사용해야 gvim합니다. 그리고 당신은 맞습니다-버퍼는 vim 응용 프로그램에 전역 적입니다.
DaveParillo

47

새 탭에서 버퍼를 열겠습니까?

화면을 분할하고 (Ctrl-W s) 창을 차지하고 Ctrl-W T


흠. 내가 생각했던 것은 아니지만 시작하기에는 나쁘지 않습니다. Ctrl-w T아직 몰랐어요 물론 첫 번째 탭에는 여전히 두 개의 버퍼가 있습니다.
innaM

아니요. 화면을 두 개의 창으로 나누고 새 탭에서 창 하나를 열면 첫 번째 탭에서 사라집니다. 그것은 남아 있지 않습니다 (적어도 내 gvim72에는 없습니다). 버퍼는 윈도우 / 탭에 연결되어 있지 않습니다. vim은 파일 내용을 저장하는 메모리와 비슷합니다.
Rook

아! 네가 옳아. 의 출력을 잘못 해석했습니다 :ls.
innaM

또한 ctrl-w V는 창을 세로로 분할합니다.
Shannon Nelson

1
CTRL-w v는 창을 세로로 나누기위한 올바른 명령입니다.
JRM

27

tab명령을 명령과 결합하여이를 수행 할 수 있습니다 sb[uffer].

먼저 새 탭에서 열고 자하는 버퍼의 버퍼 ID를 알아야합니다. 다음 ls명령으로 이를 확인할 수 있습니다 .

:ls
  1 %a   "foo"                          line 1
  2      "bar"                          line 0

ID가 있으면 다음을 사용하여 새 탭에서 쉽게 열 수 있습니다.

:tab sb 2

sb명령은 일반적으로 새로운 분할 창에서 지정된 버퍼가 열리지 만 tab명령 대신, 새 탭에서 열이 발생합니다.

tab명령을 사용하면 탭 목록에서 새 탭을 작성할 위치를 지정할 수도 있습니다. 예를 들어, :0tab sb 2현재 탭 다음이 아니라 목록의 시작 부분에 새 '막대기'탭이 나타납니다.


2
버퍼 번호가 필요하지 않고 버퍼 이름의 명확한 부분을 지정하면 VIM이 나머지를 대신합니다.
디저트

1
이것은 내가 찾고 필요로했던 대답이었습니다. :tab buffer part-of-name새 탭을 열지 않을 때 당황했습니다 ! 그러나 :tab sb part-of-name매력처럼 일했습니다. 감사합니다!!!!
Sukima

이것은 OP의 정확한 질문은 아니지만 내가 찾던 것입니다. :)
jackcogdill

25

OP가 요청한 것을 달성하는 더 좋은 방법은 다음과 같습니다.

:bufdo tab split

이렇게하면 버퍼 수에 관계없이 각 버퍼가 자체 탭으로 열립니다. 이것을 많이 사용하면 .vimrc에서 쉽게 매핑 할 수 있습니다. 이 작은 vim 플러그인 과 결합 된 다음은 자체 탭 에서 :grep(또는 : Ack ) 모든 항목을 엽니 다 .

:grep foo
:QuickFixOpenAll
:bufdo tab split

물론, 플러그인에 의지 할 때 빠른 수정 사항 목록 컨텐츠를 탭으로 직접 열도록 플러그인을 수정하기가 쉽습니다.

업데이트 : 나는 아래 ggustafsson의 의견을 크게 외쳐야합니다. 그것은 많은 것들의 가장 좋은 대답이며 멀리서 구성 행동에 대한 Vim의 경향을 아름답게 보여줍니다. 제안은 다음과 같습니다.

 :tab sball

: tab: sball 에 대한 Vim 도움말을 찾아 보면 여기서 무슨 일이 일어나고 있는지 알 수 있습니다.


후손에 대한 이전 편집의 비슷한 접근 방식은 :bufdo execute "tabnew %"입니다. 새로운 접근 방식이 좀 더 명확하다고 생각합니다.
John Whitley

한 가지주의 사항 : vim의 시작 버퍼가 비어 있지 않으면 마지막 버퍼를 두 번 여는 것 같습니다. 간단한 수정 사항을 찾으면 업데이트를 게시하겠습니다.
John Whitley

12
:tab sball더 잘 작동하는 것 같습니다.
ggustafsson 2012 년

6

1. Vim에서 두 개의 파일을 엽니 다.

$ vim foo 바

2. 버퍼 수를 확인하십시오.

: ls
  1 % "foo"
  2 "바"

3. 두 명령을 연결합니다 : tabnew새 탭을 열고 b <buffer_number>원하는 버퍼를 탭에로드합니다.

: tabnew | b 2

8
3 단계의 문제점은 먼저 비어있는 버퍼로 새 탭을 작성한 다음 버퍼 2를 열어 버퍼 목록에 제목없는 버퍼를 추가로 생성한다는 것입니다. 더 나은 사용법:tab sb 2
rkjnsn

1
@ rkjnsn 당신은 그것을 대답으로 게시해야합니다- 'vim의 새 탭에서 기존 버퍼를 어떻게 편집합니까?'라는 질문에 가장 잘 대답합니다.
JonnyRaa

1
@JonnyLeeds 님.
rkjnsn

4

다른 사람들이 언급하지 않은 점을 추가하십시오.

  • 현재 창을 새 탭으로

창이 여러 개인 <C-W>T경우이 창을 새 탭으로 이동합니다. 그러나이 단축키는 "버퍼"가 아닌 "창"에만 해당됩니다. 이 스타일을 선호 :sp하거나 <C-W>s현재 버퍼를 하나 이상의 창에 복제 <C-W>T하려면 새 탭으로 이동하십시오.

4 번의 키 입력 또는 7 번의 키 입력

  • 새 탭으로의 현재 버퍼

:tabe % 현재 버퍼에 대한 새 탭을 엽니 다.

7 개의 키 스트로크.

  • 새 탭으로 버퍼링

CtrlP 플러그인을 사용하는 경우 "CtrlPBuffer"도 사용할 수 있으며 <C-t>바로 가기를 사용하여 새 탭 페이지에서 열 수 있습니다. 이 스타일은 다른 버퍼로 쉽게 전환 할 수 있습니다.

"CtrlPBuffer"바로 가기, 4 번 이상의 키 입력.


:tabe %내가 오랫동안 찾고 있었던 것입니다, 감사합니다!
pevik

아니요, :tabe %현재 버퍼에 대한 새 탭을 실제로 열지 않습니다. 무슨 일 즉 %현재의 버퍼의 파일 경로로 확장됩니다 및 :tabe해당 경로를 엽니 다. Vim은 이미 열려있는 파일을 열려고하는 것을 확인하고 가지고있는 버퍼를 재사용합니다. 이는 파일 경로가없는 버퍼에서는 작동하지 않음을 의미합니다. 새 파일을 열어서 :new저장하지 않은 경우이 파일을 새 탭에 넣을 수 없습니다. : 당신이 필요로하는 실제 명령은 무엇을 자신의 대답에 넣어 rkjnsn입니다 :tab sb %이하 ::tab sb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.