在Vim窗口之间移动的捷径

前端之家收集整理的这篇文章主要介绍了在Vim窗口之间移动的捷径前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有单个Vim选项卡显示9个缓冲区(相同的分隔,如表3×3).目前,要从左上角的窗口到右下角,我必须按3,Ctrl W,J,然后按3,L.这很麻烦,我想只需要按住Ctrl 9去第九个窗口并按住Ctrl 3去第三个窗口等等.有没有什么简单的方法可以在Vim中映射这样的东西?
有一个比使用鼠标或硬盘移动映射更简单的解决方案;如果窗口编号不同于3×3矩阵的窗口编号,或者如果您决定使用少于9个窗口,则它们将会断开.就是这样:

在您的.vimrc中包含以下内容

  1. let i = 1
  2. while i <= 9
  3. execute 'nnoremap <Leader>' . i . ' :' . i . 'wincmd w<CR>'
  4. let i = i + 1
  5. endwhile

现在,您可以按< Leader>< number>并被带到你想要的窗口号码.我不会建议超过9,因为IMO,具有多个视口的实用程序遵循Rayleigh distribution,并且在一个窗口中太多的视口很快变得无用.

如果您的状态栏中显示窗口号码,以帮助您快速找出您要访问的窗口以及您要访问的窗口,这将会有所帮助.要做到这一点,使用这个小功能,并相应地添加到你的状态.

  1. function! WindowNumber()
  2. let str=tabpagewinnr(tabpagenr())
  3. return str
  4. endfunction

在你的状态线上看到它:

  1. set laststatus=2
  2. set statusline=win:%{WindowNumber()}

请注意,上述行将取代您的状态线.这只是为了说明的目的,显示如何调用函数.你应该把它放在你认为适合你身份状况的地方.这是我的样子:

编辑:

romainl要求我的状态行在评论中,所以这里是:

  1. "statusline
  2. hi StatusLine term=bold cterm=bold ctermfg=White ctermbg=235
  3. hi StatusHostname term=bold cterm=bold ctermfg=107 ctermbg=235 guifg=#799d6a
  4. hi StatusGitBranch term=bold cterm=bold ctermfg=215 ctermbg=235 guifg=#ffb964
  5.  
  6. function! MyGitBranchStyle()
  7. let branch = GitBranch()
  8. if branch == ''
  9. let branchStyle = ''
  10. else
  11. let branchStyle = 'git:' . branch
  12. end
  13. return branchStyle
  14. endfunction
  15.  
  16. function! WindowNumber()
  17. let str=tabpagewinnr(tabpagenr())
  18. return str
  19. endfunction
  20.  
  21. set laststatus=2
  22. set statusline=%#StatusLine#%F%h%m%r\ %h%w%y\ col:%c\ lin:%l\,%L\ buf:%n\ win:%{WindowNumber()}\ reg:%{v:register}\ %#StatusGitBranch#%{MyGitBranchStyle()}\ \%=%#StatusLine#%{strftime(\"%d/%m/%Y-%H:%M\")}\ %#StatusHostname#%{hostname()}

最后一行应该是单行(如果您的设置自动将其分解成多行,请小心).我知道有一些方法可以在每个步骤中使用增量的字符串连接进行组织,但我也很懒惰来改变它.

猜你在找的Bash相关文章