내가 사용하는 경우 :
:tabedit file1 file2
나는 얻다:
E172: Only one file name allowed
:tabedit
여러 파일 이름 으로 사용할 수있는 방법이 있습니까? 아니면 한 번에 여러 탭을 여는 또 다른 방법은 무엇입니까?
:args *.c | tab all
. 다른 질문은 이것보다 인기가 많으므로 연결하는 것도 좋습니다.
내가 사용하는 경우 :
:tabedit file1 file2
나는 얻다:
E172: Only one file name allowed
:tabedit
여러 파일 이름 으로 사용할 수있는 방법이 있습니까? 아니면 한 번에 여러 탭을 여는 또 다른 방법은 무엇입니까?
:args *.c | tab all
. 다른 질문은 이것보다 인기가 많으므로 연결하는 것도 좋습니다.
답변:
인수 목록을 수정하여 "내장"방식을 사용하는 다른 대답 의 문제와 복잡성을 감안할 때 , 나는 이것을 수행하기 위해 작은 기능을 추가했습니다.
" Open multiple tabs at once
fun! OpenMultipleTabs(pattern_list)
for p in a:pattern_list
for c in glob(l:p, 0, 1)
execute 'tabedit ' . l:c
endfor
endfor
endfun
command! -bar -bang -nargs=+ -complete=file Tabedit call OpenMultipleTabs([<f-args>])
이제 사용할 수 있습니다 :Tabedit *.vim
. 이 기능은 모든 글 로빙 패턴을 확장하고 모든 :tabedit <f>
파일에 대해 실행 됩니다. 원하는만큼 경로 이름을 추가 할 수 있습니다. 예를 들면 다음과 같습니다.
:Tabedit file.rb
:Tabedit *.c
:Tabedit file1.py file2.py _*.py
:Tabedit /etc/hosts file{1,2}.sh
글쎄, 등등 ...
나는 조금에 넣고 globedit.vim의 도에 대한 명령이 포함 된 플러그인, :Edit
, :Split
, 등
[<f-args>]
대신 사용 "<args>"
-그 방법으로 pattern
매개 변수는 List (배열)이며 문자열을 수동으로 나눌 필요가 없습니다. (2) glob()
List를 리턴하도록 세 번째 인수로 0이 아닌 값을 전달하십시오 . 그러면 수동 분할도 피할 수 있습니다. 0
동작에 영향을주지 않고 건너 뛰려면 두 번째 인수 로 전달해야합니다 glob(l:p, 0, 1)
.
내가 아는 한, 이것을 수행하는 유일한 내장 방법은 다음과 같습니다.
:args *.vim
:tab all
먼저 :args
인수 목록을 대체합니다. 인수 목록에는 Vim을 연 파일이 나열됩니다. 그래서 vim file1 file2
인수 목록에 포함 된 의미 file1
와 file2
.
런타임에이를 수정할 수 있으며 Vim은 인수 목록의 모든 새 항목에 대한 버퍼를 엽니 다.
자세한 내용 :help argument-list
은 참조하십시오.
:all
명령은 인수 목록의 모든 항목에 대한 창이 열립니다 :tab
명령이 명령을 실행, 그리고 명령이 새 창을 열 것입니다 주어진 새 탭을 엽니 다.
경고
이 방법에는 몇 가지주의 사항이 있습니다.
우선, 중복 검사가 없으므로 동일한 버퍼에 대해 둘 이상의 탭으로 끝날 수 있습니다.
그러나 가장 큰 문제는 모든 탭을 인수 목록에있는 것으로 대체한다는 것입니다. 그래서 당신은 손실 기존의 모든 탭을. 인수 목록을 바꾸지 않고 인수 로 추가
하여이를 약간 우회 할 수 있습니다 . 하지만 같은 명령 또는 않습니다 되지 인수 목록을 변경, 당신은 인수 목록에 추가하지 않는 한 당신은 (당신은 여전히하지만, 버퍼 목록에있는) 그 탭을 잃게됩니다. 인수 목록의 모든 항목을 탭에서 열지 않을 수도 있습니다. 추가 탭으로 두 파일을 열면됩니다.:argadd *.vim
:edit
:tabedit
현재 열려있는 모든 탭을 인수 목록에 추가하여 (실제로는 작동 할 수는 없음) 먼저 추가 하여이 작업을 약간 개선 할 수는 있지만 여전히 완벽하지는 않습니다. 탭에 둘 이상의 창이 있으면 여전히 수정됩니다 ...
:argdo tabedit %
각 인수에 대해 새로운 탭을 엽니 다. 하나의 탭으로 시작하고 n 개의 새로운 탭을 열면 자연스럽게 n + 1 탭이 남습니다 . :tab all
훨씬 더 나은 솔루션입니다.
:next
예를 들어 다음과 같이 명령 을 사용할 수 있습니다 .
:n file1 file2
또는:
:n *.txt
:args *.vim
? 를 사용하는 것과 같습니다 . 적어도, 그것은 똑같이 행동하고 그것을 똑같이 :help next_f
문서화합니다.
실제로 새 기능을 작성하지 않고도 새 탭을 열고 현재 탭을 유지할 수 있습니다 ( 스택 오버플로 에서이 답변 참조 ).
:args file1 file2 | argdo tabe
:tabe
첫 번째 파일이 현재 탭에서 열리기 전에 빈 탭 ( )을 새로 열 수 있습니다 . 또한 여분의 빈 탭이 열린 채로 있습니다 ( :help argdo
이유 이해하기 참조 ).
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
. 프롬프트를 지우려면 Enter 키를 누르고 :close
마지막을 제거하려면 입력 해야합니다 ( empty) 탭 ... 많은 타이핑이 가능하며 많은 탭을 열 경우에만 가치가 있습니다 (2 또는 3 파일의 경우 :tabe
두 번 사용하는 것이 더 빠릅니다).