iTerm2打开文件

时间:2017-03-28 18:56:46

标签: bash vagrant iterm2

iTerm2有一个很好的⌘-click来在你的IDE中打开一个文件。

问题是我通过Vagrant运行Web服务器,因此/home/vagrant并不是iTerm2可以访问的物理目录。

有没有办法可以:

A。)Map / home / vagrant / to .bash_profile

中的/ Sites

B。)通过返回修改后的路径的查找/替换脚本运行它?

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:1)

无法使用.bash_profile配置它...但是iTerm2的偏好中有一个解决方案。

偏好设置 - >个人资料 - >语义历史。更改为运行命令... 并填写:

sh ~/click-handler.sh \1 /home/vagrant /Sites

创建〜/ click-handler.sh:

old_filepath=$1
old_basepath=$2
new_basepath=$3
new_filepath="${old_filepath/$old_basepath/$new_basepath}"
open $new_filepath

我们试试吧!

答案 1 :(得分:1)

谢谢Udlei。你肯定指出了我正确的方向。 “运行命令”的问题在于iTerm2(当前为3.0.15)如果无法识别文件系统中的目录,则不会对点击做出响应。我将其更改为“Always Run Command”,并且能够使用您的代码来实现此目的。我非常感谢你的帮助。

#!/bin/bash

# iTerm2 > Profiles > Adv -> Semantic History > Always Run Command:
# sh ~/click-handler.sh \1 /home/vagrant /Sites \5

original_filepath=$1
vagrant_basepath=$2
local_basepath=$3
current_pwd=$4

# remove quotes from var_dump if present
original_filepath_temp="${original_filepath%\"}"
original_filepath="${original_filepath_temp#\"}"

# look for /home/vagrant in the $original_filepath
if [[ $original_filepath =~ ^(\/home\/vagrant) ]];
    then
    new_filepath="${original_filepath/$vagrant_basepath/$local_basepath}"
    # echo $new_filepath > ~/Library/Logs/iterm.log
    /usr/local/bin/subl $new_filepath
# default local handling
    else
    original_filepath="$current_pwd/$original_filepath"
    # echo $original_filepath > ~/Library/Logs/iterm.log
    /usr/local/bin/subl $original_filepath
fi