我有一个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?
您需要'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)