【问题标题】:easier way to navigate between vim split panes在 vim 拆分窗格之间导航的更简单方法
【发布时间】:2011-08-28 12:57:23
【问题描述】:

我在 vim 上使用 NERDTree,通常使用 i 打开文件

有没有一种在不同窗格之间切换的简单方法?目前我使用CTRL+W+W 从一个窗格移动到另一个窗格。

【问题讨论】:

  • 我知道这已经得到解答,但您知道您可以使用CTRL+W, [hjkl] 来导航窗格/框架吗?这样,如果您打开了 4-6 个窗口,您就不必一遍又一遍地点击CTRL+W,W。我喜欢 overthink 的键绑定,但我再次享受跨系统的一致性,当我习惯了键绑定时,我很难重新学习它们。如果我开始使用 CTRL-H 向左走,我可能最终会在没有键绑定的系统上按 CTRL-H,它实际上默认打印退格字符。该死,我以前按 CTRL-H 删除东西,因为退格在我的机器上不起作用!
  • CTRL+W, [hjkl] 可以完美地导航窗格!谢谢。
  • CTRL+W... 映射存在问题,因为 CTRL+W 会关闭浏览器和其他应用程序中的选项卡。有时,焦点所在的窗口与您想象的不同,然后……诅咒。

标签: vim navigation


【解决方案1】:

很久以前,我发现了一个我一直坚持使用的tip(曾经在 vim.org,现在在 wikia 上)。重新映射 ctrl-[hjkl] 以导航拆分。它对我很有帮助。

" Use ctrl-[hjkl] to select the active split!
nmap <silent> <c-k> :wincmd k<CR>
nmap <silent> <c-j> :wincmd j<CR>
nmap <silent> <c-h> :wincmd h<CR>
nmap <silent> <c-l> :wincmd l<CR>

【讨论】:

  • 我的 .vimrc 中有很多类似的命令,没有它们就活不下去。我的是变体,例如 map &lt;C-J&gt; &lt;C-w&gt;j&lt;C-w&gt;_map &lt;C-H&gt; &lt;C-w&gt;h&lt;C-w&gt;\| _| 加法会在我切换时强制拆分为其全宽或全高。
  • 我不知道为什么,但是当更改为h 方向时,我的目标窗口被搞砸了。由于:wincmd 仅在正常模式下有所不同,并且映射完全在正常模式下使用,我已将nmap &lt;silent&gt; &lt;c-h&gt; :wincmd h&lt;CR&gt; 替换为nnoremap &lt;silent&gt; &lt;c-h&gt; &lt;c-w&gt;h
  • 我强烈建议也将大写锁定重新映射到 ctrl。它使使用此答案变得更加容易。
  • @RafaelRendonPablo 我已经在各种终端中成功使用了它:urxvt、gnome-terminal,也许还有其他。您的终端应用程序是否可能正在捕获 Ctrl?
  • 嗯,也许,我使用tmux,它使用Ctrl + a作为前缀,我会尝试禁用tmux。谢谢:)
【解决方案2】:

我更喜欢按单个键而不是按键和弦。以下将窗格移动映射到箭头键:

" Smart way to move between panes
map <up> <C-w><up>
map <down> <C-w><down>
map <left> <C-w><left>
map <right> <C-w><right>

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,但我有一个完美的方法。使用拆分的数量。

    split_number C-w C-w

    例如要转到第 3 号拆分,请执行此操作 3 C-w C-w,按 Ctrl-w 两次。

    【讨论】:

    • 通过简单的搜索,我发现拆分是从左上角到右下角编号的。
    • 太棒了! 3 ctrl-w ctrl-w
    • "通过简单的搜索,我发现拆分是从左上角到右下角编号的。"是的,索引从 1 开始。
    【解决方案4】:

    键映射绝对是要走的路。我使用 overthink 提到的映射。我还在我的 vimrc 中包含以下映射来移动拆分本身。

    " Move the splits arround!
    nmap <silent> <c-s-k> <C-W>k                                                                                                                       
    nmap <silent> <c-s-j> <C-W>j                                                                                                                       
    nmap <silent> <c-s-h> <C-W>h                                                                                                                       
    nmap <silent> <c-s-l> <C-W>l
    

    这样,如果拆分在错误的位置打开(假设是左侧,我希望它在右侧),我会转到该拆分并点击 &lt;C-S-l&gt;,然后拆分会移动到我想要的位置。

    【讨论】:

    • 我认为 Vim 将 视为与 相同的 ascii 代码。因此,执行上述操作将覆盖先前的映射。
    • 我实际上使用箭头键,所以可能是
    • 这确实堵塞了接受答案的映射。另见stackoverflow.com/questions/1506764。你可以改用这样的东西: "nmap :wincmd K" 和 J、H、L 的等价物。
    【解决方案5】:

    为了与通过 gt & gT 更改选项卡保持一致,我目前正在尝试使用 g 映射来更改拆分。当我按 Ctrl 键时,我倾向于按 shift 键,这样可以帮助我避免这个错误,直到我不这样做为止变得更好。

    nnoremap gh <C-W><C-H>
    nnoremap gj <C-W><C-J>
    nnoremap gk <C-W><C-K>
    nnoremap gl <C-W><C-L>
    

    【讨论】:

      【解决方案6】:

      实现它的非常简单的方法。键入此快捷方式两次,应该可以工作

      ctrl+w ctrl+w
      

      【讨论】:

      • 在问题中:Currently I use CTRL+W+W to move from one pane to another. 所以...
      猜你喜欢
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      相关资源
      最近更新 更多