当我输入“vi”但意思是“cd”时自动检测?

Ale*_*lex 21 shell bash alias cd-command

每天大约 5 次,当我的意思是“cd”时,我输入“vi”,最后在 vi 中打开一个目录。这让我疯了。似乎应该有一种方法可以检测我何时输入“vi + directory”并自动将其更改为“cd + directory”。想法?

Chr*_*own 38

假设您vi使用目录作为最后一个参数调用:

vi() {
    if [[ -d ${!#} ]]; then
        cd "$@"
    else 
        command vi "$@"
    fi
}
Run Code Online (Sandbox Code Playgroud)

  • @OlivierDulac 同意——同样危险的是将 `rm` 别名为 `rm -i`,这是许多发行版中的默认设置。我通常认为解决问题的最好方法是解决用户问题,而不是解决问题。 (5认同)
  • @OlivierDulac 将 `rm` 别名为 `rm -i` 过去可能会为您省去一些麻烦,但将来可能(并且可能会)让您遇到更多麻烦...... (3认同)
  • @Alex 我想这对于您错误键入“vi”而不是“cd”的罕见情况来说是完美的,同时教你现在总是键入“vi”;)[即,我希望你不要经常必须使用另一台服务器/机器,在那里该功能不会存在以减轻您的压力...] [+1,不过,这也是我想回答的问题,除了我只是测试“${ 1}" [然后 cd "${1}"] 而不是 "${!#}" ...] (2认同)
  • @crisron:`${!#}` 间接引用了最后一个参数,`command` 只是为了避免这种情况下的函数递归。 (2认同)