我试图映射 Ctrl + [和 Ctrl + ] 在缓冲区之间移动
我在SO_SNDLOWAT
:
SO_SNDLOWAT
Ctrl + ] 有效。 Ctrl + [触发.vimrc
,我不知道原因。
我想 Ctrl + ] 和 Ctrl + [只需在缓冲区和之间移动Esc 触发nnoremap <c-[> :bprevious<CR>
nnoremap <c-]> :bnext<CR>
nnoremap <Esc> :noh<CR>
。
答案 0 :(得分:4)
ctrl + ] , ctrl + [和 ESC 已经存在由vim
使用。不建议映射vim
已使用的密钥。
更多:help map-which-keys
。
因此,我想建议,例如,使用 F2 和 F3
,而不是映射这些键。nnoremap <F2> :bprevious<CR>
nnoremap <F3> :bnext<CR>
答案 1 :(得分:3)
@dlmeetei和@Lucas Beier是对的。这些对于Vim来说是不好的钥匙。
映射安全密钥,例如功能键,引导线映射或未使用的映射。示例(与unimpaired.vim相同):
nnoremap [b :bprevious<c>r
nnoremap ]b :bnext<cr>
nnoremap ]B :blast<cr>
nnoremap [B :bfirst<cr>
如需更多帮助,请参阅:
:h map-which-keys
:h key-notation
:h :bfirst
:h :blast
循环缓冲区很慢。我相信:bprevious
和:bnext
仅适用于一系列狭隘的条件:
<c-6>
/ <c-^>
)。您可以通过:bp
命令直接跳转到缓冲区,而不是使用:bn
和:b
循环。只需使用:b {partial_name}<tab>
。
:b
:<tab>
完成<c-d>
列出完成:b foo
。适用于<tab>
。:b foo*bar
或:b foo/**/bar
:b
的拆分变体是:sb
。nnoremap <leader>b :ls<cr>:b<space>
如需更多帮助,请参阅:
:h :b
:h :ls
:h cmdline-completion
:h file-searching
:b
更好吗?完全跳过缓冲区管理并使用标记,cscope和/或GNU Global。这些将帮助您直接前往您想去的地方,而不仅仅是您最后离开光标的位置的正确缓冲区。
对于初学者标记我建议Gutentags和:h tags
。
您还可以使用:find
标签完成功能,并将'path'
设置为.,,**
,以获得基本不太模糊的查找器。
如需更多帮助,请参阅:
:h CTRL-]
:h tags
:h cscope
:h :find
:h 'path'
像CtrlP或fzf这样的模糊查找器允许进行常规文件导航。对于更具体的项目导航,您可以使用类似Projectionist.vim的内容。
我建议慢慢学习更多缓冲区和常规导航命令。这些命令可以很好地为您提供帮助,并且无需借助缓冲循环就可以更快地导航。
就个人而言,我使用:b
,标签,cscope / GNU Global和projectionist.vim的组合来满足我的大部分导航需求。我经常打开50多个缓冲区,无需使用缓冲区循环就可以访问我想要的文件。