我怎么能改变我的位置/顺序的当前标签在Vim?例如,如果我想重新定位我的当前标签是第一个标签?
当前回答
下面是我的宏,使用@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>
它处理包装案例。
其他回答
下面是我的宏,使用@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>
它处理包装案例。
使用:tabm可以使用相对参数或零索引绝对参数重新定位制表符。
绝对的:
移动制表符到位置i::tabm i
相对:
向右移动tab i的位置::tabm +i 将tab i的位置向左移动::tabm -i
这是一个相对较新的功能。因此,如果它不起作用,请尝试更新您的vim。
移动当前标签到第n个位置
:tabm n
其中n是一个数字,表示位置(从0开始)
左/右移动标签
我认为更好的解决方案是将选项卡向左或向右移动到当前位置,而不是计算出您希望它在的新位置的数值。
noremap <A-Left> :-tabmove<cr>
noremap <A-Right> :+tabmove<cr>
使用上面的键映射,你将能够移动当前选项卡:
向左使用:Alt + left 向右使用:Alt + right
除了其他答案中的优秀建议,如果启用了鼠标支持,您还可以简单地用鼠标拖动选项卡来移动它们。
在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中也有一些通用的标签使用信息。
我一直在寻找同样的方法,在一些帖子之后,我发现了一种比函数更简单的方法:
: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>
推荐文章
- git可以自动在空格和制表符之间切换吗?
- 为什么Vim使用~扩展名保存文件?
- Sublime Text 3,将空格转换为制表符
- 如何在Vim或Linux中将空格转换为制表符?
- 我如何使用vimdiff来解决git合并冲突?
- 在Vim中删除当前缓冲区的文件名/路径
- Git在终端提交时打开VIM,但无法返回终端
- 请参阅编辑器中的换行符和回车
- 如何在NERDTree中显示隐藏文件(以句点开始)?
- Visual Studio Code -将空格转换为制表符
- 如何复制一个选择到OS X剪贴板
- 如何删除(不削减)在Vim?
- Vim:在可视模式下快速选择文本块的方法
- 是否有vim命令来重新定位一个选项卡?
- MacVim和普通Vim有什么区别?