[英]Mapping Ctrl+[ and Ctrl+] to move between buffers in Vim
我正在尝试映射Ctrl + [和Ctrl + ]以在缓冲区之间移动。
我在.vimrc
有这个:
nnoremap <c-[> :bprevious<CR>
nnoremap <c-]> :bnext<CR>
nnoremap <Esc> :noh<CR>
Ctrl + ]有效。 Ctrl + [触发器:noh
和我不知道为什么。
我想按Ctrl + ]和Ctrl + [只需在缓冲区和Esc之间移动以触发:nho
。
ctrl + ] , ctrl + [和ESC已被vim
。 不建议映射已由vim
使用的密钥。 更多信息:help map-which-keys
。
因此,我想建议,例如,使用F2和F3 ,而不是映射这些键
nnoremap <F2> :bprevious<CR>
nnoremap <F3> :bnext<CR>
@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>
完成 <cd>
列出完成 :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
使用制表符完成:find
并将您的'path'
设置为.,,**
以获得基本较不模糊的查找器。
有关更多帮助请参阅:
:h CTRL-]
:h tags
:h cscope
:h :find
:h 'path'
像CtrlP或fzf这样的模糊查找器允许进行常规文件导航。 对于更具体的项目导航,您可以使用类似Projectionist.vim的东西。
我建议慢慢学习更多缓冲区和常规导航命令。 这些命令将为您提供良好的帮助,并帮助您更快地导航,而无需借助缓冲循环。
就个人而言,我使用了以下组合:b
,标签,cscope / GNU Global和projectionist.vim,以满足我的大多数导航需求。 我经常打开50多个缓冲区,无需使用缓冲区循环即可访问我想要的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.