Vim ctags:我们可以在不关闭 taglist window 的情况下在 taglist window 和源代码 window 之间切换焦点吗?

Vim ctags: can we toggle focus between taglist window and source code window without closing the taglist window?

我在 linux 上使用带有 vim 的 ctags。

只要我在任何标签上按下回车键,焦点就会转到源代码 window 并且为了重新关注标签列表 window 我必须做 :TlistToggle两次(使用变量 'Tlist_GainFocus_On_ToggleOpen' set to 1)——这基本上关闭了标签列表 window 并在获得焦点后再次打开它。

我很好奇我们是否可以在不关闭标签列表 window 的情况下在标签列表 window 和来源 window 之间切换焦点?

:help window

...给出关于 Vim windows 的章节,

:help window-move-cursor

...成为您正在寻找的sub-chapter:

4. Moving cursor to other windows           *window-move-cursor*

CTRL-W <Down>                   *CTRL-W_<Down>*
CTRL-W CTRL-J                   *CTRL-W_CTRL-J* *CTRL-W_j*
CTRL-W j    Move cursor to Nth window below current one.  Uses the cursor
        position to select between alternatives.

CTRL-W <Up>                 *CTRL-W_<Up>*
CTRL-W CTRL-K                   *CTRL-W_CTRL-K* *CTRL-W_k*
CTRL-W k    Move cursor to Nth window above current one.  Uses the cursor
        position to select between alternatives.

CTRL-W <Left>                   *CTRL-W_<Left>*
CTRL-W CTRL-H                   *CTRL-W_CTRL-H*
CTRL-W <BS>                 *CTRL-W_<BS>* *CTRL-W_h*
CTRL-W h    Move cursor to Nth window left of current one.  Uses the
        cursor position to select between alternatives.

CTRL-W <Right>                  *CTRL-W_<Right>*
CTRL-W CTRL-L                   *CTRL-W_CTRL-L* *CTRL-W_l*
CTRL-W l    Move cursor to Nth window right of current one.  Uses the
        cursor position to select between alternatives.

CTRL-W w                    *CTRL-W_w* *CTRL-W_CTRL-W*
CTRL-W CTRL-W   Without count: move cursor to window below/right of the
        current one.  If there is no window below or right, go to
        top-left window.
        With count: go to Nth window (windows are numbered from
        top-left to bottom-right).  To obtain the window number see
        |bufwinnr()| and |winnr()|.  When N is larger than the number
        of windows go to the last window.

                        *CTRL-W_W*
CTRL-W W    Without count: move cursor to window above/left of current
        one.  If there is no window above or left, go to bottom-right
        window.  With count: go to Nth window, like with CTRL-W w.

CTRL-W t                    *CTRL-W_t* *CTRL-W_CTRL-T*
CTRL-W CTRL-T   Move cursor to top-left window.

CTRL-W b                    *CTRL-W_b* *CTRL-W_CTRL-B*
CTRL-W CTRL-B   Move cursor to bottom-right window.

CTRL-W p                    *CTRL-W_p* *CTRL-W_CTRL-P*
CTRL-W CTRL-P   Go to previous (last accessed) window.

                        *CTRL-W_P* *E441*
CTRL-W P    Go to preview window.  When there is no preview window this is
        an error.
        {not available when compiled without the |+quickfix| feature}

If Visual mode is active and the new window is not for the same buffer, the
Visual mode is ended.  If the window is on the same buffer, the cursor
position is set to keep the same Visual area selected.

                        *:winc* *:wincmd*
These commands can also be executed with ":wincmd":

:[count]winc[md] {arg}
        Like executing CTRL-W [count] {arg}.  Example: >
            :wincmd j
<       Moves to the window below the current one.
        This command is useful when a Normal mode cannot be used (for
        the |CursorHold| autocommand event).  Or when a Normal mode
        command is inconvenient.
        The count can also be a window number.  Example: >
            :exe nr . "wincmd w"
<       This goes to window "nr".

也就是说,通过启用鼠标支持 (set mouse=a),您可以 left-click 您希望光标所在的位置(并拖动 window 边框,并且... )

不就是TlistOpen的目的吗?

否则,如果taglist window有一个可以识别的名字,你可以用let b = bufwinnr(the_buffer_name_or_id)提取window号,然后用exe b.'wincmd w'跳转到它。您可能需要使用 let buf_id = filter(range(1,bufnr('$')), 'v:val =~ "THEPATTERN"'))

之类的内容搜索正确的缓冲区