当我想在vim中编辑文件时,我经常想在打开文件之前cd到包含的dir。我这样做的正常过程是......
cd filepath/that/contains/
vim filename.d
但很多时候,我最终打字......
cd filepath/that/contains/filename.d
{error: not a directory}
我想创建一个替代cd的功能。以下是我提出的建议,但它不起作用。
alias cd='vimcd'
function vimcd () {
if [ -f $1 ]
then
cd $(dirname $1)
vim $(basename $1)
else cd $1
fi
}
答案 0 :(得分:3)
你的函数中的cd
应该是builtin
,否则只是递归你的函数。
cd () {
if [ -f "$1" ]; then
builtin cd "$(dirname "$1")"
vim "$(basename "$1")"
else
builtin cd "$1"
fi
}
答案 1 :(得分:1)
我知道这是一个老问题,但是您可以使用vim插件:NerdTree。
这样一来,您就不用管cd
了,但要以增强编辑器为代价。
您的命令将是:
$ vim filepath/that/contains
如果是文件,则将其打开以进行编辑。如果是目录,则会打开目录浏览器。