Vim忽略文件完成中的路径名

Vim忽略文件完成中的路径名,vim,Vim,假设我在/tmp中,我在vim中打开了两个文件:test.txt和tmpfile.txt。现在我想删除tmpfile.txt缓冲区。I键入:bd tm选项卡。我想要的行为是让它自动完成tmpfile.txt;我得到的行为是tmpfile.txt和/tmp/test.log的列表,因为它在目录名和文件名上自动完成。我怎样才能让vim表现得像我想要的那样?这是不可能的,列表来自缓冲区列表上的内容,而不是来自本地路径,你可以在任何地方(:pwd),没关系,当你按tab键时,结果来自内存中的列表,这就是

假设我在
/tmp
中,我在vim中打开了两个文件:
test.txt
tmpfile.txt
。现在我想删除
tmpfile.txt
缓冲区。I键入
:bd tm
选项卡。我想要的行为是让它自动完成
tmpfile.txt
;我得到的行为是
tmpfile.txt
/tmp/test.log
的列表,因为它在目录名和文件名上自动完成。我怎样才能让vim表现得像我想要的那样?

这是不可能的,列表来自缓冲区列表上的内容,而不是来自本地路径,你可以在任何地方(:pwd),没关系,当你按tab键时,结果来自内存中的列表,这就是为什么/tmp出现的原因,因为如果你在/tmp上,/tmp不应该再次出现


如果查看:help:bd,它将bufname作为参数,而不是fname作为:badd

使用
^tm
来匹配文件名的开头。(你必须在/tmp中才能工作,这样相对路径就是文件名。)

使用更独特的模式,如
:bd-fi
。我认为
:bd./tm
应该可以工作。@Romeo,不行。如果您查看:help:bd,它将bufname作为参数,而不是fname作为:baddI同意Romaill,那么您需要一个更独特的模式。请记住,您也可以将
*
用作通配符。因此,
:bd t*f
也会起作用。这并不能真正回答“我如何让vim表现得像我想要的那样”,但我会将其标记为接受,因为我想这是我将得到的最好结果。@Dan:你可以试着问一个问题“我如何编写vim插件来更改内置命令的完成情况?”请参见
:help:command
:help:command completion
。基本上,您希望定义自己的完成函数,以包括仅对文件名的
%:t
进行操作。这很公平。谢谢你的提示。