Bash函数cd和vim文件名打开

时间:2014-07-11 17:01:31

标签: bash vim cd .bash-profile

当我想在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
}

2 个答案:

答案 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

如果是文件,则将其打开以进行编辑。如果是目录,则会打开目录浏览器。