vim의 굉장히 편리한데 별로 사용되지 않는 「탭 페이지」기능
vim 탭 페이지
여러분 vim의 탭 페이지 기능을 사용하고 있습니까?
이 맨 위 바에 나와있는 브라우저 등에서 자주있는 "탭"입니다. ↓
이것은 vim 7.3부터 도입된 기능이지만 왠지 많이 사용되지 않습니다.
Google 검색 vim 탭 페이지
그러나 이것은 엄청 편리합니다!
지금까지 tmux에서 vim을 여러 개 시작하고 있어, 조금 다른 작업을 할 때는 다른 vim을 기동하고 있었습니다만, 탭 페이지를 이용하는 것에 의해 1개의 vim에서 작업할 수 있어 또한 양크도 물론 탭간에 공유되므로 개발 효율이 상당히 올랐습니다.
별로 사용되지 않는 원인은 아마, 디폴트 상태라면, 탭간의 이동이 꽤 귀찮기 때문이라고 생각합니다.
디폴트는 이런 느낌
오른쪽 탭으로 이동할 때마다 :tabnext
마지막 탭으로 이동하려면 :tablast
등을 칠 수 없습니다.
또한 :tabnext3
와 같은 명령으로 왼쪽에서 세 번째 탭으로 이동할 수 있습니다.
기본 탭 라인 (탭의 상태 표시 줄)은 번호도 쓰지 않으므로 쉽게 이동할 수 없습니다.
거기서 암흑미몽왕(다크빔 마스터) 일 Shougo씨의 .vimrc를 참고로
편안하게 탭 페이지 기능을 사용할 수 있도록 .vimrc를 만들었습니다.
참고 Shougo/shougo-s-github
.vimrc" Anywhere SID.
function! s:SID_PREFIX()
return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$')
endfunction
" Set tabline.
function! s:my_tabline() "{{{
let s = ''
for i in range(1, tabpagenr('$'))
let bufnrs = tabpagebuflist(i)
let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears
let no = i " display 0-origin tabpagenr.
let mod = getbufvar(bufnr, '&modified') ? '!' : ' '
let title = fnamemodify(bufname(bufnr), ':t')
let title = '[' . title . ']'
let s .= '%'.i.'T'
let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'
let s .= no . ':' . title
let s .= mod
let s .= '%#TabLineFill# '
endfor
let s .= '%#TabLineFill#%T%=%#TabLine#'
return s
endfunction "}}}
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()'
set showtabline=2 " 常にタブラインを表示
" The prefix key.
nnoremap [Tag] <Nop>
nmap t [Tag]
" Tab jump
for n in range(1, 9)
execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>'
endfor
" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ
map <silent> [Tag]c :tablast <bar> tabnew<CR>
" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>
" tx タブを閉じる
map <silent> [Tag]n :tabnext<CR>
" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>
" tp 前のタブ
이것을 .vimrc에 쓰면 아래와 같은 사진 상태가됩니다.
" Anywhere SID.
function! s:SID_PREFIX()
return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$')
endfunction
" Set tabline.
function! s:my_tabline() "{{{
let s = ''
for i in range(1, tabpagenr('$'))
let bufnrs = tabpagebuflist(i)
let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears
let no = i " display 0-origin tabpagenr.
let mod = getbufvar(bufnr, '&modified') ? '!' : ' '
let title = fnamemodify(bufname(bufnr), ':t')
let title = '[' . title . ']'
let s .= '%'.i.'T'
let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'
let s .= no . ':' . title
let s .= mod
let s .= '%#TabLineFill# '
endfor
let s .= '%#TabLineFill#%T%=%#TabLine#'
return s
endfunction "}}}
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()'
set showtabline=2 " 常にタブラインを表示
" The prefix key.
nnoremap [Tag] <Nop>
nmap t [Tag]
" Tab jump
for n in range(1, 9)
execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>'
endfor
" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ
map <silent> [Tag]c :tablast <bar> tabnew<CR>
" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>
" tx タブを閉じる
map <silent> [Tag]n :tabnext<CR>
" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>
" tp 前のタブ
t1
, t2
,,, t9
에서 왼쪽에서 n 번째 탭으로 점프tc
에서 새 탭, tx
에서 탭 닫기 에서 탭 페이지를 효율적으로 사용할 수 있습니다.
t에 이미 명령을 할당한 경우에는 [Tag]를 별도의 키에 적용하면 문제없이 사용할 수 있다고 생각합니다.
P.S.
S와 RYS. JP , coincheck 등의 서비스를 운영, 개발하고 있습니다. 흥미가 있는 분은 꼭 와다 까지 연락을!
Reference
이 문제에 관하여(vim의 굉장히 편리한데 별로 사용되지 않는 「탭 페이지」기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wadako111/items/755e753677dd72d8036d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)