【问题标题】:Vim File Path Search AlgorithmVim 文件路径搜索算法
【发布时间】:2021-02-22 04:43:34
【问题描述】:

TLDR。如何将 vim 路径/文件名搜索算法从循环自动完成更改为增量自动完成。 (例如在 ubuntu 终端中自动完成文件路径时)。

当在 vim 中打开一个新文件进行编辑时,例如使用:vsp:tabe 按下tab 键来预测目标文件的路径/文件的下一部分时使用的算法,有不便我想改变的行为。

例如,我有一个包含三个文件的目录:

/one.txt
/onetwo.txt
/onetwothree.txt

当尝试从在同一目录中打开的 vim 实例打开 onetwothree.txt 时,我会输入 :tabe o 然后按 tab 键,vim 将自动完成文件名/路径到 :tabe one.txt。然后我必须再次按tab 将自动完成更改为:tabe onetwo.txt,然后再按一次:tabe onetwothree.txt,然后再按enter 打开文件。 (算法 1)tab 算法具有逐个循环遍历完整路径/文件名的行为。

在 ubuntu 终端中,搜索行为要好得多,并且输入 :tabe o 并按下 tab 只会部分自动完成以提供 :tabe one。然后再次输入ttab 将自动完成从:tabe onet:tabe onetwo 然后再次按ttab 将自动完成从:tabe onetwot:tabe onetwothree.txt。 (算法 2)tab 算法具有部分完成路径/文件名的行为。

使用第一种算法,在处理大量文件时,按tab 逐个循环浏览完整路径/文件名的行为可能会很不方便。在 ubuntu 终端 tab 使用的第二种算法中,自动完成具有部分完成路径/文件名的行为,并允许快速准确地完成路径。

我意识到,在这个简单的示例中,使用第二种算法需要多按两次按键,但在具有许多文件循环遍历每个选项的非平凡示例中是痛苦的。

如何更改文件路径搜索算法? .vimrc 中是否有指定它的设置?

【问题讨论】:

    标签: vim autocomplete filepath


    【解决方案1】:

    您需要启用:help 'wildmenu':

    set wildmenu
    

    并使用:help 'wildmode' 调整其行为:

    " just an example
    set wildmode=longest,list
    

    【讨论】:

    • 你可能没见过,但我引用的 vim-help 文章中已经说明了这一点。我现在提取了两个相关的解决方案。
    • 谢谢,这正是我想要的。我已将此添加到我的.vimrc
    【解决方案2】:

    来自:h cmdline-completion

    如果你喜欢 tcsh 的自动列表补全,你可以使用这个映射: :cnoremap X (其中 X 是要使用的命令键,是 CTRL-L 和 CTRL-D) 这将找到最长的匹配,然后 列出所有匹配的文件。

    如果你喜欢 tcsh 的自动列表补全,你可以使用 'wildmode' 模拟它的选项。例如,这模仿了 autolist=ambiguous: :set wildmode=longest,list 这将找到最长的匹配 第一个'wildchar',然后列出所有匹配的文件和下一个。

    所以要么在命令模式下映射<c-l><c-d>,要么将wildmode 适配为longest,list

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2013-08-08
      • 2020-06-22
      相关资源
      最近更新 更多