【发布时间】:2010-01-22 19:08:16
【问题描述】:
在 Vim 中,有没有办法在当前选项卡和最后一个活动选项卡之间快速切换? '' 在当前行和最后一个活动行之间切换的方式排序。插件/键盘映射/巫毒都可以接受。
【问题讨论】:
在 Vim 中,有没有办法在当前选项卡和最后一个活动选项卡之间快速切换? '' 在当前行和最后一个活动行之间切换的方式排序。插件/键盘映射/巫毒都可以接受。
【问题讨论】:
把它放在你的 .vimrc 中:
if !exists('g:lasttab')
let g:lasttab = 1
endif
nmap <Leader>tl :exe "tabn ".g:lasttab<CR>
au TabLeave * let g:lasttab = tabpagenr()
然后,在正常模式下,键入 \tl 以切换到您上次查看的标签。
【讨论】:
nmap <c-\> :exe "tabn ".g:lasttab<CR> .. 谢谢@LucasOman
t<Tab>,我喜欢它。
nmap <c-t><c-f> :tabn<space>1<cr>nmap <c-t><c-z> :tabn<space>1<cr>:tabp<cr>
修复标签页关闭时的潜在问题:
" Switch to last-active tab
if !exists('g:Lasttab')
let g:Lasttab = 1
let g:Lasttab_backup = 1
endif
autocmd! TabLeave * let g:Lasttab_backup = g:Lasttab | let g:Lasttab = tabpagenr()
autocmd! TabClosed * let g:Lasttab = g:Lasttab_backup
nmap <silent> <Leader>` :exe "tabn " . g:Lasttab<cr>
【讨论】:
我使用缓冲区而不是选项卡,但我可以使用:b#在当前和最近使用的缓冲区之间切换
使用缓冲区的基础是:
:e filename to open file in new buffer
:bn to go to next buffer
:bp to go to previous buffer
:bd to close current buffer
【讨论】:
:b#
<c-^> 或 ctrl shift 6 实际上会切换到最后一个缓冲区。如果您键入:ls 并且您至少打开了2 个缓冲区,那么您将看到名称左侧带有%(当前缓冲区)的缓冲区和名称左侧带有#(最后一个缓冲区)的另一个缓冲区。所以,<c-^> 有效地执行了:b#。事实上,如果你:echo @# 你会看到你之前访问过的缓冲区。此外,如果您let @#="foo.bar",它将修改<c-^> 的行为,因为该功能依赖于寄存器'# (@#)。我认为b # 的功能也会改变,但我不确定。
:let @#="foo.bar",那么字符串"foo.bar"(忽略括号)必须只匹配你打开的缓冲区的路径和名称。例如,如果您键入:e styles//foo.css,那么您的缓冲区名称将为"styles//foo.css",但您不必将@# 寄存器与"styles//foo.css" 匹配(尽管这会起作用)。您只需要使用"styles/foo.css"。因此,我们可以看到缓冲区的名称不需要匹配;相反,只有前面的路径名(每个单独 - 就像拼接在“/”上一样)和文件名需要匹配。
我认为你需要的是命令:tablast
【讨论】: