创建执行选项卡的vim映射(自动完成)

red*_*bmk 3 vim autocomplete

背景:

我有一个vim映射,可以帮助我轻松访问代码库中的其他目录.

cmap j1 `current_base`/path/to/section1/
cmap j2 `current_base`/other/path/
Run Code Online (Sandbox Code Playgroud)

current_base是一个bash脚本,它返回相对于当前文件的路径.(例如,如果我进去的/foo/bar/code/some/path话会回来/foo/bar/code.

现在,在vim我可以输入:e j1获得

:e `current_base`/path/to/section1/
Run Code Online (Sandbox Code Playgroud)

如果我按下tab键一次,它将执行current_base并替换我所拥有的

:e /foo/bar/code/path/to/section1/
Run Code Online (Sandbox Code Playgroud)

如果我然后tab再次按下该键,我会得到该文件夹​​中所有文件和目录的列表,因为我已经set wildmode=list:longest在我的vimrc中了.

我想让vim映射为我自动完成,所以我不必每次都按Tab键两次,但这样:

cmap j1 `current_base`/path/to/section1/<tab><tab>
Run Code Online (Sandbox Code Playgroud)

结果是:

`current_base`/path/to/section1/^I^I
Run Code Online (Sandbox Code Playgroud)

题:

如何将vim映射实际自动完成,就好像我按下了tab键,而不是插入^I

rom*_*inl 5

您需要'wildcharm'选项:

set wildcharm=<C-z>
Run Code Online (Sandbox Code Playgroud)

您可以使用<Tab>它在命令行映射中使用的位置:

cmap j1 `current_base`/path/to/section1/<C-z><C-z>
Run Code Online (Sandbox Code Playgroud)