如何设置vim地图不改变jumplist?

how to set vim map not change jumplist?

[first line]

int test() {
    a   
    b
    c
    d
    {
        e
        f   
        g   
    }
}
  1. 光标当前符合f
  2. 如果我按[[,光标会转到[first line]
  3. 我想要光标转到 int test() {。所以我设置了一个映射:nnoremap [[ ][%.
  4. 地图命令运行良好,但有一个问题:如果我按 CTRL+O,光标将转到最后一行 }
  5. 我想要的是光标回到f行。

我试过nnoremap [[ :keepjumps normal ][%<CR>,但还是不行。

我该如何实施?

  1. [[ 使光标​​转到 int test(){ 行。
  2. CTRL+O使光标向后跳转。

我的 vim 版本是 Vi IMproved 7.4

跳转列表的工作方式经常被误解。存储在跳转列表中的跳转仅记录您进行的“跳转”的起点,而不是其目的地。这意味着 :help :keepjumps 应该用于防止将新的 origin 添加到跳转列表中。

为了 <C-o> 跳回到原点 f,原点必须出现在跳转列表中,所以只有原点 } 必须被忽略。

正在做:

nnoremap [[ :keepjumps normal ][%<CR>

你有效地阻止了两个原点f原点}被添加到跳转列表。

您可以通过将 ][ 移出 :keepjumps 命令来修复映射:

nnoremap [[ ][:keepjumps normal %<CR>