回答:
:tabm
相対引数またはゼロインデックスの絶対引数を使用してタブを再配置できます。
絶対の:
:tabm i
相対的:
:tabm +i
:tabm -i
これは比較的新しい機能です。それでうまくいかない場合は、vimを更新してみてください。
:tabm
vim 7.3では相対引数を受け入れるため、そうでない場合はvimを更新する必要があります。
現在のタブを移動するということですか?これはtabmoveを使用して機能します。
:tabm[ove] [N] *:tabm* *:tabmove*
Move the current tab page to after tab page N. Use zero to
make the current tab page the first one. Without N the tab
page is made the last one.
現在のタブを左または右に移動する2つのキーバインディングがあります。とても便利な!
編集:ここに私のVIMマクロがあります。私は大規模なViMコーダーではないので、もっと上手くできるかもしれませんが、それが私のやり方です:
" Move current tab into the specified direction.
"
" @param direction -1 for left, 1 for right.
function! TabMove(direction)
" get number of tab pages.
let ntp=tabpagenr("$")
" move tab, if necessary.
if ntp > 1
" get number of current tab page.
let ctpn=tabpagenr()
" move left.
if a:direction < 0
let index=((ctpn-1+ntp-1)%ntp)
else
let index=(ctpn%ntp)
endif
" move tab page.
execute "tabmove ".index
endif
endfunction
この後、たとえば次のようにキーをバインドできます.vimrc
。
map <F9> :call TabMove(-1)<CR>
map <F10> :call TabMove(1)<CR>
これで、F9またはF10を押して現在のタブを移動できます。
私は同じものを探していましたが、いくつかの投稿の後に、関数よりも簡単な方法を見つけました:
:execute "tabmove" tabpagenr() # Move the tab to the right
:execute "tabmove" tabpagenr() - 2 # Move the tab to the left
tabpagenr()は、実際のタブ位置を返し、tabmoveはインデックスを使用しています。
右側をCtrl + Lに、左側をCtrl + Hにマッピングしました。
map <C-H> :execute "tabmove" tabpagenr() - 2 <CR>
map <C-J> :execute "tabmove" tabpagenr() <CR>
:execute "tabmove" tabpagenr() + 1 <CR>
右に移動するために使用する必要がありました。用MacVim 8.0.1420(144) 。
:tabm n
n
位置を表す数字はどこですか(ゼロから開始)
私がより良い解決策は、あなたがそれを望む新しい位置の数値を理解するのではなく、現在の位置にタブを左または右に移動することです。
noremap <A-Left> :-tabmove<cr>
noremap <A-Right> :+tabmove<cr>
上記のキーマップを使用すると、現在のタブを移動できます。
マウスのサポートが有効になっている場合は、他の回答の細かい提案に加えて、マウスでタブをドラッグして移動することもできます。
GUIモードでGUIウィジェットのタブを使用するか、ターミナルスタイルのタブを使用するかに関係なく、MacVimおよびその他のGUI vim実装では、これがデフォルトでオンになっています。
set mouse=a
適切な端末(ビューに名前を付けるためにgnome-terminal、Terminal.app、iTerm2、PuTTY / KiTTYなどのxtermおよびそのほとんどのエミュレーター)を所有していて、純粋なttyモードのVimでも動作します。列222を超えるマウスクリックも必要ですset ttymouse=sgr
。参照でVimを、しないのはなぜ第二百二十コラム過去の私のマウスの仕事?その背景について。
私はvim-tabberと呼ばれるプラグインを作成しました。このプラグインは、タブの入れ替え、シフト、および組み込みのタブ操作コマンドの機能に追加するためのいくつかの追加機能を提供し、組み込みとの互換性を維持しています。プラグインを使用しないことを選択した場合でも、READMEに一般的なタブの使用法に関する情報があります。
何らかの理由で、関数の回答が機能しなくなりました。vim-ctrlspaceとの競合が疑われます。いずれにせよ、Vimは組み込み関数でタブを左右に移動できるため、関数の答えの計算は不要です。Vimはユーザーフレンドリーではないため、ラッピングケースを処理するだけです。
" Move current tab into the specified direction.
"
" @param direction -1 for left, 1 for right.
function! TabMove(direction)
let s:current_tab=tabpagenr()
let s:total_tabs = tabpagenr("$")
" Wrap to end
if s:current_tab == 1 && a:direction == -1
tabmove
" Wrap to start
elseif s:current_tab == s:total_tabs && a:direction == 1
tabmove 0
" Normal move
else
execute (a:direction > 0 ? "+" : "-") . "tabmove"
endif
echo "Moved to tab " . tabpagenr() . " (previosuly " . s:current_tab . ")"
endfunction
" Move tab left or right using Command-Shift-H or L
map <D-H> :call TabMove(-1)<CR>
map <D-L> :call TabMove(1)<CR>
tabmove
および-
/ +
サインインexecute
ラインを。
@maybeshewillの回答からの相対引数を使用した私のマクロは次のとおりです。
" Shortcuts to move between tabs with Ctrl+Shift+Left/Right
function TabLeft()
if tabpagenr() == 1
execute "tabm"
else
execute "tabm -1"
endif
endfunction
function TabRight()
if tabpagenr() == tabpagenr('$')
execute "tabm" 0
else
execute "tabm +1"
endif
endfunction
map <silent><C-S-Right> :execute TabRight()<CR>
map <silent><C-S-Left> :execute TabLeft()<CR>
ラッピングケースを取り扱っています。