Quickly switching buffers in Vim normal mode
最近我发现我在vim中"错误地使用标签"。从那以后,我一直在尝试在VIM中使用缓冲区,通过MinibuFexplorer进行辅助,但我发现从正常模式更改缓冲区需要多少次按键,这很痛苦。有了标签,我可以只做gt或gabdt在正常模式下在标签之间来回跳跃,我也可以做numbert转到特定的标签。
对于缓冲区,我要么使用
如何在正常模式下获得等效的切换选项卡以在正常模式下切换缓冲区,这样我就可以为
把这个加到你的.vimrc里
1 2 3 | map gn :bn<cr> map gp :bp<cr> map gd :bd<cr> |
请注意,您正在重新映射
有关如何映射按键笔划的详细信息,请参见
顺便说一下,我个人在映射中使用
我通常在缓冲区之间切换的方式是使用带有内置自动完成功能的
您可以开始输入所需缓冲区文件名的任何部分,这很好。
更不常见的是,我实际上记得我想要的缓冲区的数量,我使用类似于
` ctrl-^'切换到编号缓冲区。
我在.vimrc中有以下几行:
1 2 | nnoremap <silent> <tab> :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bnext<CR> nnoremap <silent> <s-tab> :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bprevious<CR> |
现在,一个选项卡允许您转到下一个缓冲区,一个移位选项卡允许您转到上一个缓冲区。
这是基于尼克诺尔森的回答,但我想扩大我在那里的评论…
Type
:b (note the space), then cycle through the open buffers with Tab or ← / →.
…这使我们更接近我使用的所有其他编辑器和浏览器中的ctrl+t。
实际上,在某些方面甚至更好,然后您可以使用←/→箭头前后移动。它避免了拇指+手指fu来键入ctrl+shift+t来向后浏览编辑器和浏览器中的选项卡。
N.B.shift+tabbkbbkbd与tabbkbd的作用相同
这实际上类似于Windows10中的win+t,一旦您首先打开窗口,然后可以使用箭头键移动。
编辑:对于使用缓冲区,我还有另外两个技巧:
根据这个答案,我把它放在我的电脑里了。
1 | nnoremap <leader>bb :buffers<cr>:b<space> |
它打开
我也有
1 | nnoremap <leader><tab> :b#<cr> |
它在当前和最近使用的缓冲区之间切换,有点像在目录之间来回切换时执行
我使用插件unpaired.vim
它定义映射
对于跳到一个特定的缓冲区,我知道最好的选择就是你提到的那个:
如果进入另一个缓冲区,您可以通过键入
扩展Rumple Stitskin的答案,例如,如果您知道要访问的文件位于缓冲区
1 | 4Ctrl-^ |
在我的英国键盘上,我实际上可以执行
1 | :help CTRL-^ |
顺便说一下,您可以看到
1 | :buffers |
我使用lustyexplorer:我点击
但是,您并不是"不正确地使用标签",而是以您想要的方式使用标签。如果这对你有效,为什么要经历忘记学习"正确方法"的痛苦呢?
vim是另一种使用模糊匹配快速更改缓冲区的方法。此插件附带默认命令:
1 | :Buffers |
它打开所有打开的缓冲区的列表,类似于:ls,但是可以(模糊地)搜索和选择缓冲区。在当前窗口中打开缓冲区是通过Enter,但也可以分别使用^x^v或^t在新拆分(h或v)或选项卡中打开缓冲区。
值得注意的是:
1 | :Lines |
它允许搜索所有打开的缓冲区的内容。如果您忘记了缓冲区的名称,但知道它应该包含什么,那么这就很方便了。
我使用F9和F10在具有此映射的上一个/下一个缓冲区之间移动:
1 2 | map <F9> :bprevious<CR> map <F10> :bnext<CR> |
对我来说,这是切换缓冲区的最快方式。
我认为Bufexplorer是一个很好的插件。