我经常需要执行which命令,然后在vim中打开它才能真正看到里面有什么。我想要一个别名或函数来完成此操作,并带有制表符完成功能。这是我尝试过的:
superwhich() {
which "$1" | vim
}
superwhich2() {
vim $(which $1)
}
这些都不起作用。我有什么遗漏的吗?
答案1
csh
并且tcsh
没有功能。
唯一的方法是使用别名,并通过!
历史替换将参数传递给它们:
alias superwhich 'vim "`which \!:1`"'
superwhich bzgrep
或者更好(带有错误检查):
alias superwhich 'set q = `which \!:1`; if(-r "$q") vim "$q"'
答案2
您可以为此定义一个脚本:
#! /bin/sh -
for cmd do
if
cmd_path=$(command -v -- "$cmd")
then
set -- "$@" "$cmd_path"
else
printf >&2 '"%s" not found\n' "$cmd"
fi
shift
done
[ "$#" -gt 0 ] && vim -- "$@"
然后就可以从任何 shell 使用它了。
请注意,它不适用于sh
内置函数(例如echo
/ [
...)。
使用zsh
,你只需运行:
vim =cmd
或者
vim cmd(:P)
编辑cmd
命令的文件。