我通常一次使用超过5个文件。我使用缓冲区打开不同的文件。 我使用如下命令:buf file1,:buf file2等。 有没有更快的方法来移动到不同的文件?
答案 0 :(得分:7)
我用的是什么:
:b#
或:bp
:bn
:b5
:buffers
或更短::ls
并简要介绍一下:he buffer
关于Vim Wiki上易于缓冲切换的wiki条目:http://vim.wikia.com/wiki/Easier_buffer_switching
SO已经有一个关于你的问题:How do you prefer to switch between buffers in Vim?
答案 1 :(得分:3)
一些映射可以让您的生活更轻松。
这个列出你的缓冲区并提示你输入一个数字:
nnoremap gb :buffers<CR>:buffer<Space>
这个列出了&#34; wildmenu&#34;中的缓冲区。取决于'wildcharm'
选项以及'wildmenu'
和'wildmode'
:
nnoremap <leader>b :buffer <C-z>
这些允许您在不考虑的情况下在所有缓冲区之间循环:
nnoremap <PageUp> :bprevious<CR>
nnoremap <PageDown> :bnext<CR>
另外,请不要忘记<C-^>
,它允许您在两个缓冲区之间切换。
答案 2 :(得分:1)
缓冲区打开后,您只需键入:b partial_filename
即可切换
因此,如果:ls
显示我的~./vimrc
已打开,那么我只需输入:b vimr
或:b rc
即可切换到该缓冲区
答案 3 :(得分:1)
下面我将介绍一些.vimrc
部分的摘录。它包括映射领导者密钥,设置wilds选项卡完成,最后我的缓冲区导航键选择(所有这些都主要受到interweb上人们的启发,包括romainl)。编辑:然后我逛逛我的窗口和标签的快捷方式。
" easier default keys {{{1
let mapleader=','
nnoremap <leader>2 :@"<CR>
leader
键是大多数用户定义的键命令的前缀键(某些插件也使用它)。默认值为\
,但很多人建议更容易到达,
。
第二行是@
从"
剪贴板执行命令,以防您想快速尝试各种键绑定(不依赖:so %
)。 (我的nmeumonic是 Shift - 2 是 @ 。)
" wilds {{{1
set wildmenu wildmode=list:full
set wildcharm=<C-z>
set wildignore+=*~ wildignorecase
对于内置完成,wildmenu
可能是在命令行上使用制表符完成时在Vim上显示黄色的部分。 wildmode
设置为以逗号分隔的列表,每个列表都依次出现在每个标签页上(也就是说,我的列表只是一个元素,list:full
)。 list
显示候选人的行和列。 full
的含义包括维持wildmenu
的存在。 wildcharm
是在宏中包含 Tab 的方法。 *~
适用于:edit
和:find
命令。
" nav keys {{{1
" windows, buffers and tabs {{{2
" buffers {{{3
nnoremap <leader>bb :b <C-z><S-Tab>
nnoremap <leader>bh :ls!<CR>:b<Space>
nnoremap <leader>bw :ls!<CR>:bw<Space>
nnoremap <leader>bt :TSelectBuffer<CR>
nnoremap <leader>be :BufExplorer<CR>
nnoremap <leader>bs :BufExplorerHorizontalSplit<CR>
nnoremap <leader>bv :BufExplorerVerticalSplit<CR>
nnoremap <leader>3 :e#<CR>
nmap <C-n> :bn<cr>
nmap <C-p> :bp<cr>
,3
用于在“两个”最后缓冲区之间切换(比内置 Ctrl - 6 更容易到达)。 Nmeuonic Shift - 3 是#,#
是最后一个缓冲区的寄存器符号。 (见:marks
。)
,bh
将从隐藏缓冲区(!
)中进行选择。
,bw
是bwipeout
缓冲区的编号或名称。例如,您可以在查看列表时使用,bw 1 3 4 8 10 <CR>
删除多个。请注意,wipeout比:bdelete
更具破坏性。他们有利有弊。例如,:bdelete
将缓冲区留在隐藏列表中,而:bwipeout
删除全局标记(请参阅:help marks
和大写标记的说明)。
我还没有确定这些键绑定,我更倾向于我的,bb
只是,b
(只是定义而留下其他定义使Vim暂停,看看你是否会输入更多)。
:BufExplorer
的那些快捷方式实际上是该插件的默认设置,但我已将其写出来,因此如果我想开始使用,b
而不挂起,我可以更改它们。
如果您仍然发现Vim缓冲区使用起来有点尴尬,请尝试将功能与标签和窗口结合起来(直到您感觉更舒服?)。
" windows {{{3
" window nav
nnoremap <leader>w <C-w>
nnoremap <M-h> <C-w>h
nnoremap <M-j> <C-w>j
nnoremap <M-k> <C-w>k
nnoremap <M-l> <C-w>l
" resize window
nnoremap <C-h> <C-w><
nnoremap <C-j> <C-w>+
nnoremap <C-k> <C-w>-
nnoremap <C-l> <C-w>>
注意前缀的,w
有多好。此外,我保留Ctrl
密钥用于调整大小,因为Alt
(M-
)很难在所有环境中实现,而且我没有更好的方法来调整大小。我可以使用,w
来切换窗口。
" tabs {{{3
nnoremap <leader>t :tab
nnoremap <M-n> :tabn<cr>
nnoremap <M-p> :tabp<cr>
nnoremap <C-Tab> :tabn<cr>
nnoremap <C-S-Tab> :tabp<cr>
nnoremap tn :tabe<CR>
nnoremap te :tabe<Space><C-z><S-Tab>
nnoremap tf :tabf<Space>
nnoremap tc :tabc<CR>
nnoremap to :tabo<CR>
nnoremap tm :tabm<CR>
nnoremap ts :tabs<CR>
nnoremap th :tabr<CR>
nnoremap tj :tabn<CR>
nnoremap tk :tabp<CR>
nnoremap tl :tabl<CR>
" or, it may make more sense to use
" nnoremap th :tabp<CR>
" nnoremap tj :tabl<CR>
" nnoremap tk :tabr<CR>
" nnoremap tl :tabn<CR>
总结我的窗口和标签键,我可以使用 Alt 导航它们,这实际上很容易到达。换句话说:
" (modifier) key choice explanation {{{3
"
" KEYS CTRL ALT
" hjkl resize windows switch windows
" np switch buffer switch tab
"
" (resize windows is hard to do otherwise, so we use ctrl which works across
" more environments. i can use ',w' for windowcmds o.w.. alt is comfortable
" enough for fast and gui nav in tabs and windows. we use np for navs that
" are more linear, hjkl for navs that are more planar.)
"
这样,如果 Alt 正在工作,你可以在标签和窗口中快速找到“打开”缓冲区的同时按住它。
答案 4 :(得分:0)
有很多方法可以解决。最好的是为你工作的最好的。你有很多模糊匹配插件可以帮助你导航。最让我印象深刻的两件事是
1)CtrlP或Unite的模糊缓冲区搜索
2)LustyExplorer和/或LustyJuggler
最简单的:
:map <F5> :ls<CR>:e #
按 F5 列出所有缓冲区,只输入类型编号。