我在bashrc中使用这个小函数来快速查看我使用的任何自定义实用程序的源代码:
function wvi()
{
vi `which $1`;
}
例如,fvi mysort
将打开我的实用程序mysort
的来源。
我还可以在这里使用另一件事 - 自动切换到中存在实用程序的目录。
例如,
~ $ which mysort
/usr/bin/mysort
~ $
然后fvi mysort
应该cd /usr/bin
,然后使用vi
打开。
如何将此逻辑放入.basrhc
?是否有一些直接的实用程序,或者我是否需要首先获取路径然后切断最后一个节点?
答案 0 :(得分:2)
dirname `which mysort`
答案 1 :(得分:1)
无需外部工具:
fvi () {
cd "${1%/*}"
vi "${1##*/}"
}
答案 2 :(得分:1)
我会这样做
wvi () {(
p=$(which "$1")
cd "${p%/*}"
${EDITOR:-vi} "${p##/*/}"
)}
$ EDITOR而不是文字vi以防万一用户可能更喜欢emacs( - :
答案 3 :(得分:0)
wvi() {
local file="$(which "$1")"
cd $(dirname "$file")
vi $(basename "$file")
cd - # return to the previous dir
}
使用function
()
关键字
您可以编写您的功能以在子shell中操作,这样您就不必在之后进行整理:
wvi() (
file="$(which "$1")"
cd $(dirname "$file")
vi $(basename "$file")
)
答案 4 :(得分:0)
cd $(dirname `which $1`)
在大多数情况下都可以使用,但你可能想通过附上类似
的内容来考虑符号链接cd $(dirname $(readlink `which $1`))
如果是if语句(测试内置的-h选项查找符号链接)
if [ -h `which $1 ]; then
...
您可能希望这样做的原因是,打开符号链接时vim的行为有时会发生变化,具体取决于您打算对正在打开的文件执行的操作。