我怎么能改变我的位置/顺序的当前标签在Vim?例如,如果我想重新定位我的当前标签是第一个标签?
当前回答
除了其他答案中的优秀建议,如果启用了鼠标支持,您还可以简单地用鼠标拖动选项卡来移动它们。
在MacVim和其他GUI vim实现中,无论使用GUI小部件选项卡还是GUI模式中的终端样式选项卡,默认情况下都是开启的。
它也可以在纯tty模式Vim中工作,如果你设置了mouse=a并且有一个合适的终端(xterm和它的大多数模拟器,如gnome-terminal, terminal。app, iTerm2和PuTTY/KiTTY,以命名一个视图)。注意,鼠标点击列222以外的地方也需要set ttymouse=sgr;看在Vim,为什么我的鼠标不能工作超过220列?作为背景资料。
我已经编写了一个名为vim-tabber的插件,它提供了一些额外的功能,用于交换选项卡,移动它们,并添加内置选项卡操作命令的功能,同时在很大程度上保持与内置的兼容性。即使你选择不使用插件,在README中也有一些通用的标签使用信息。
其他回答
除了其他答案中的优秀建议,如果启用了鼠标支持,您还可以简单地用鼠标拖动选项卡来移动它们。
在MacVim和其他GUI vim实现中,无论使用GUI小部件选项卡还是GUI模式中的终端样式选项卡,默认情况下都是开启的。
它也可以在纯tty模式Vim中工作,如果你设置了mouse=a并且有一个合适的终端(xterm和它的大多数模拟器,如gnome-terminal, terminal。app, iTerm2和PuTTY/KiTTY,以命名一个视图)。注意,鼠标点击列222以外的地方也需要set ttymouse=sgr;看在Vim,为什么我的鼠标不能工作超过220列?作为背景资料。
我已经编写了一个名为vim-tabber的插件,它提供了一些额外的功能,用于交换选项卡,移动它们,并添加内置选项卡操作命令的功能,同时在很大程度上保持与内置的兼容性。即使你选择不使用插件,在README中也有一些通用的标签使用信息。
这是个好问题,加文,因为这个问题很微妙。
来自maybeshewill和hochl的答案主要回答了这个问题——使用“:tabm”与索引或相对(+/-)索引。
但是请注意,这里可能存在混淆,其他一些答案可能忽略了这一点。看看下面由hochl提供的帮助文本:
: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.
关键词是“之后”。我怀疑这有时会让人们感到困惑。为什么?因为如果使用“:tabm3”将制表符移出第一个位置,随后键入“:tabm2”不会再次移动制表符。占用选项卡#3的文件现在占用选项卡#2,并且“:tabm2”不改变顺序。
这是一个图表。所选选项卡为每行[file_c]。
file_a file_b [file_c] file_d
:tabm0
[file_c] file_a file_b file_d
:tabm3
file_a file_b [file_c] file_d
:tabm2
file_a file_b [file_c] file_d
“:tabm”命令可以被认为是将当前选项卡移动到从0开始计数时当前占据位置的选项卡之后,其中选项卡0是最左边的选项卡,是虚构的。":tabmi"不会移动到第i个位置——如果它移动了,":tabm3"和":tabm2"将产生不同的结果。
最后,如果你有一个好的keymap,相对的move +/-语法会更简单。
使用:tabm可以使用相对参数或零索引绝对参数重新定位制表符。
绝对的:
移动制表符到位置i::tabm i
相对:
向右移动tab i的位置::tabm +i 将tab i的位置向左移动::tabm -i
这是一个相对较新的功能。因此,如果它不起作用,请尝试更新您的vim。
我一直在寻找同样的方法,在一些帖子之后,我发现了一种比函数更简单的方法:
: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>
你的意思是移动当前标签吗?这可以使用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.
我有两个键绑定,将当前选项卡向左或向右移动。非常方便!
编辑:这是我的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来移动当前标签。
推荐文章
- 是否有vim命令来重新定位一个选项卡?
- MacVim和普通Vim有什么区别?
- Tab在平板设备上不采用全宽度[使用android.support.design.widget.TabLayout]
- 有什么方法可以在Vim中查看当前映射的键吗?
- 同一行上有多个命令
- 如何将所有文本转换为小写在Vim
- 使用vimdiff查看所有' git diff '
- 禁止在vim中创建交换文件
- NERDTree重载新文件
- 在Vim中,我想返回一个词。w的反义词
- 在tmux模式中丢失vim配色方案
- 在VIM中删除光标后面或周围的单词
- 我如何可以删除在VIM所有文本从当前行文件结束?
- 如何在vim中剪切一整行并粘贴它?
- 向左/向右移动窗口?