如何检查vim是否安装?

如何检查vim是否安装?

我想知道如何检查命令是否已安装。

具体来说,我想vi在所有有效命令的vim机器上使用别名。vim我想让我的 *rc 文件保持通用。但有些操作系统默认情况下并未vim安装。而在其他方面,vi Vi 已改进,但vim不是有效命令。

我想我可以这样做(bash风格):

#If the version info from vi includes the phrase "Vi IMproved", then vi IS vim.
vimInfo=$(vi --version 2> /dev/null | head -n 1 | grep -Fi 'VI IMPROVED')
if [[ -z $vimInfo ]]; then
  if [[ -f $(which vim) ]]; then
    #if the value returned by 'which' is a valid directory, then vim is installed
    alias vi='vim'
  else
    #vim is not installed
    echo "Vi IMproved (vim) is not installed";
  fi
fi

但还有更好的办法吗?该which命令是否保证出现在所有类 UNIX 机器上?

PS 我有几乎所有流行 shell(bash、tcsh、zsh、ksh)的 *rc 文件,我打算在所有这些 shell 中应用该解决方案。因此,解决方案不应该是特定于 shell 的。语法不过,是的。

答案1

您可以使用command例如:

command -v vim

它是一个 shell 内置命令。 (zsh、bash、ksh、但不是tcsh)

tcsh你可以使用这个:

~> sh -c 'command -v vim'

答案2

我认为你把这个问题过于复杂化了。

if type vim >/dev/null 2>/dev/null; then
  alias vi=vim
fi

vim运行and 的唯一原因vi是,如果系统中这些命令是有效的,但安装不知何故被破坏,或者存在另一个同名的程序。

type内置函数存在于所有 POSIX shell 和大多数 Bourne shell 中。在 csh 中(和仅在 csh 中), 使用which

if ({ which vim }) alias vi vim >&/dev/null

在鱼中:

if type vim >/dev/null 2>/dev/null; alias vi=vim; end

相关内容