【问题标题】:Vim command line mode - how to confirm selection?Vim 命令行模式 - 如何确认选择?
【发布时间】:2014-06-17 13:40:35
【问题描述】:

在 zsh 中,如果您在 home 目录中键入 ls <Tab>,它将显示您家中所有非隐藏文件,然后每个 <Tab> 循环遍历文件名。

当当前突出显示的文件名是我想要的,如果该项目是一个目录,我输入/ 来确认我的选择,如果它是一个文件,我使用<Space>

按照this post 的指示,我在.vimrc 中添加了这两行,以提供类似vim zsh 的完成。

set wildmode=longest,list,full
set wildmenu

但是当 vim 在选项中循环时,我如何确认选择?
Like in my home dir I start vim, and :e + some tabs, when the selection is on my document dir, how can I confirm it? <Enter> 将完成命令,<Esc><C-c> 取消它,而 / 附加一个反斜杠,因此命令变为 :e document//——不是我想要的。

【问题讨论】:

    标签: vim


    【解决方案1】:

    我使用<space>进行选择。

    cnoremap <expr> <space>  wildmenumode()?"\<space>\<BS>":"\<space>"
    

    【讨论】:

      【解决方案2】:

      以防万一其他人(比如我)到了这里,觉得@Geoff 的回答不像 vim。

      我发现 Ctrl + D 完全符合 OP 的要求。更多信息:help cmdline-completion

      【讨论】:

        【解决方案3】:

        来自 vim 文档 (:help wildmenu):

        While the "wildmenu" is active the following keys have special meanings:
        
        [...]
        <Down> - in filename/menu name completion: move into a subdirectory or submenu
        [...]
        

        所以我认为这至少是你所追求的一部分。

        【讨论】:

        • 我一直认为 vim 反对使用箭头键,所以我不知何故忽略了文档中的这个命令。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多