Vim : 탭 라인에 탭 인덱스 표시


8

내가 열 말할 수 있습니다 file1.txt, file2.txt, file3a.txtfile3b.txt같은 그 tabline (상단에있는 것) 다음과 같다 :

file1.txt  file2.txt  2 file3a.txt

( file3b.txt.와 동일한 탭에서 분할로 표시되므로 누락 된 방법 에 유의 하십시오. file3a.txt)

을 사용하여 탭 사이를 더 빠르게 이동하려면 ( <Number>gt각 탭을 사용하여 파일 이름과 함께 색인을 표시하고 싶습니다. 이렇게 :

1:<file1.txt>  2:<file2.txt>  3:<2 file3a.txt>

서식 (특히 꺾쇠 괄호)은 선택 사항입니다. 색인이 (, 1:등) 에 나타나기를 원합니다 2:.

단서 :h tab-page-commands나 구글 에 대한 단서가 없습니다.


1
업데이트 : 플러그인이 도움 될 수 있습니다. 나는이 질문에 대한 답변 후에 많이 만들어 졌으므로 어떤 답변에도 나타나지 않습니다.
crayzeewulf

답변:


0

다음을 확인해야합니다.

:help 'tabline'
:help setting-tabline

'guioptions'설정에 "e"가있는 경우 :

:help 'guitablabel'

그것은 나를 올바른 길로 인도했다. 고마워요!
비트 마스크

9
@bitmask는 아마도 솔루션을 제공 할 수 있습니까? Heptite, 답을 수정할 수 있습니까?
wmarbut

@ wmarbut이 플러그인을 사용하면 훌륭합니다.
ospider

동의했다. 솔루션이 분명히 "발견"되었지만 제공되지 않았을 때 매우 실망스럽고 모든 사람들이 문서를 파고 같은 구성을 작성하는 데 같은 시간을 소비해야합니다.
Alex H

12

이것을 당신의 vimrc에 넣으십시오

" Rename tabs to show tab number.
" (Based on http://stackoverflow.com/questions/5927952/whats-implementation-of-vims-default-tabline-function)
if exists("+showtabline")
    function! MyTabLine()
        let s = ''
        let wn = ''
        let t = tabpagenr()
        let i = 1
        while i <= tabpagenr('$')
            let buflist = tabpagebuflist(i)
            let winnr = tabpagewinnr(i)
            let s .= '%' . i . 'T'
            let s .= (i == t ? '%1*' : '%2*')
            let s .= ' '
            let wn = tabpagewinnr(i,'$')

            let s .= '%#TabNum#'
            let s .= i
            " let s .= '%*'
            let s .= (i == t ? '%#TabLineSel#' : '%#TabLine#')
            let bufnr = buflist[winnr - 1]
            let file = bufname(bufnr)
            let buftype = getbufvar(bufnr, 'buftype')
            if buftype == 'nofile'
                if file =~ '\/.'
                    let file = substitute(file, '.*\/\ze.', '', '')
                endif
            else
                let file = fnamemodify(file, ':p:t')
            endif
            if file == ''
                let file = '[No Name]'
            endif
            let s .= ' ' . file . ' '
            let i = i + 1
        endwhile
        let s .= '%T%#TabLineFill#%='
        let s .= (tabpagenr('$') > 1 ? '%999XX' : 'X')
        return s
    endfunction
    set stal=2
    set tabline=%!MyTabLine()
    set showtabline=1
    highlight link TabNum Special
endif

2
'%999XX'여기서 무슨 의미 인지 아십니까 ?
바흐

이것은 터미널과 gvim 모두에서 작동하기 때문에 최선의 해결책이라고 생각합니다. 나의 투표를 가져 가라
imolit

5

익명 페이지 당신은 당신의 탭 인덱스를 제공 적어도 두 (I 테스트 한 것)을 찾을 수 있습니다, 그 중 하나는 편집이 각 버퍼 내부 창문의 수를 생성합니다.

다음은 편집 된 버퍼 수를 생성하는 버퍼를 수정 한 결과입니다. 변경 한 것은 카운트의 하이라이트 값을 나머지 탭과 일치시키는 것입니다.

여기에 이미지 설명을 입력하십시오

set tabline=%!MyTabLine()  " custom tab pages line
function MyTabLine()
        let s = '' " complete tabline goes here
        " loop through each tab page
        for t in range(tabpagenr('$'))
                " set highlight
                if t + 1 == tabpagenr()
                        let s .= '%#TabLineSel#'
                else
                        let s .= '%#TabLine#'
                endif
                " set the tab page number (for mouse clicks)
                let s .= '%' . (t + 1) . 'T'
                let s .= ' '
                " set page number string
                let s .= t + 1 . ' '
                " get buffer names and statuses
                let n = ''      "temp string for buffer names while we loop and check buftype
                let m = 0       " &modified counter
                let bc = len(tabpagebuflist(t + 1))     "counter to avoid last ' '
                " loop through each buffer in a tab
                for b in tabpagebuflist(t + 1)
                        " buffer types: quickfix gets a [Q], help gets [H]{base fname}
                        " others get 1dir/2dir/3dir/fname shortened to 1/2/3/fname
                        if getbufvar( b, "&buftype" ) == 'help'
                                let n .= '[H]' . fnamemodify( bufname(b), ':t:s/.txt$//' )
                        elseif getbufvar( b, "&buftype" ) == 'quickfix'
                                let n .= '[Q]'
                        else
                                let n .= pathshorten(bufname(b))
                        endif
                        " check and ++ tab's &modified count
                        if getbufvar( b, "&modified" )
                                let m += 1
                        endif
                        " no final ' ' added...formatting looks better done later
                        if bc > 1
                                let n .= ' '
                        endif
                        let bc -= 1
                endfor
                " add modified label [n+] where n pages in tab are modified
                if m > 0
                        let s .= '[' . m . '+]'
                endif
                " select the highlighting for the buffer names
                " my default highlighting only underlines the active tab
                " buffer names.
                if t + 1 == tabpagenr()
                        let s .= '%#TabLineSel#'
                else
                        let s .= '%#TabLine#'
                endif
                " add buffer names
                if n == ''
                        let s.= '[New]'
                else
                        let s .= n
                endif
                " switch to no underlining and add final space to buffer list
                let s .= ' '
        endfor
        " after the last tab fill with TabLineFill and reset tab page nr
        let s .= '%#TabLineFill#%T'
        " right-align the label to close the current tab page
        if tabpagenr('$') > 1
                let s .= '%=%#TabLineFill#%999Xclose'
        endif
        return s
endfunction

스크립트는 파일이 편집되었는지 탭이 표시하는 부분을 유지하므로 다른 스크립트보다 좋습니다. 감사!
Plasty Grove

그래, airline플러그인 에서 tabline을 사용하고 있지만 솔직히 말하면, 내가 생각해 낸이 오래된 tabline은 훨씬 더 기능적이다 ...
Steven Lu

3

tabline 플러그인 되는 구현이 기능을 요청하고의 vimrc를 날려하지 않습니다 정력 플러그인있다. vim을 설치하고 다시 시작하십시오.

설치하기 위해서:

cd /usr/share/vim/vimfiles/plugin/
wget https://raw.githubusercontent.com/mkitt/tabline.vim/master/plugin/tabline.vim

또는 플러그인 관리자를 사용하십시오.


1
슈퍼 유저에 오신 것을 환영합니다! 읽어 보시기 바랍니다 소프트웨어 권장하는 방법 에 대한 최소한의 필요한 정보를 슈퍼 사용자에 소프트웨어를 추천하는 방법과 제안을. 제공된 링크가 깨져도 답변을 유용하게 유지하려면 이러한 세부 정보를 답변으로 편집해야합니다.
나는 말한다 Reinstate Monica

0

GUI 기반 Vim (Linux의 Linux, Mac의 MacVim 등)의 경우 다음에 입력하십시오 .gvimrc.

set guitablabel=%N:%M%t " Show tab numbers

실제로 표시된 숫자를 사용하는 방법에 대한 팁 :

  • Ngt탭으로 전환됩니다 N. 예를 들어 3gt탭 3으로 이동합니다.
  • :tabm2탭 2 다음 에 나타나도록 현재 탭을 이동합니다 .
    • 이 탭을 첫 번째 위치로 옮기려면 :tabm0
    • 이 탭을 마지막 위치로 옮기려면 :tabm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.