Vim - 发送制表符按键的键映射

4
我的最终目标是让Vim中的目录导航更加容易,最好不需要插件。
我在我的 .vimrc 中已经完成了以下内容:
nmap <m-up> :cd ..<enter>:pwd<enter>
nmap <m-left> :cd -<enter>:pwd<enter>
nmap <m-down> :cd <tab>

前两个命令很好用,我可以轻松地进入/返回目录。第三个命令的意图是快速到达一组选项,然后可以通过 tab/箭头键浏览到所需的子目录。然而,结果是:

:cd ^I

即它会输入一个制表符或Ctrl+I字符,而不是模拟按下Tab键,这正是我想要的结果。我有其他命令使用<esc>backspace等,它们都能如预期般工作,但<tab>有所不同。 除了在我的宏之后按Tab键之外,您有什么建议吗?

为什么要进行那么多的目录导航? - romainl
@romainl--这是一个更大的项目的一部分,旨在将vim用作shell/python环境(有点像ipython/jupyter,但希望更强大)。我知道vimshell/conque,虽然它们值得称赞,但它们并不能完全满足我的要求。 - Reaverer
2个回答

6
您需要设置 wildcharm 选项来实现该功能:
set wildcharm=<C-z>
nnoremap <m-down> :cd <C-z>

请参见:help wildcharm

1
非常好,谢谢!现在我也知道了wildcharm。 - Reaverer

1
我认为它不能像你期望的那样“Tab”,因为它将其解释为vim命令的一部分,而不是(bash?)shell的输入。如果你想查看工作目录中的内容,我的猜测是将其映射为以下内容之类的东西:
nnoremap <m-down> :!pwd

nnoremap 中的 no 是为了防止在反向映射中发生任何映射,这是一种你可能想养成的习惯。 这将显示当前目录中的内容。


我很担心这样的事情(无法进行分标签)。“cd”在这里是vim命令,与shell无关。实际上,通过!在shell中进行cd操作会创建一个新的shell进程,执行目录更改,并在不更改vim目录的情况下退出。感谢您提供关于nnoremap的提示。 - Reaverer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接