使用TextWrangler打开远程文件

时间:2009-09-01 21:51:50

标签: terminal textwrangler

我目前在远程Web服务器上编辑文件的解决方案是使用Fetch浏览远程计算机和TextWrangler进行编辑。但是因为我在远程机器上导航命令行时感觉更舒服(但是使用VIM还不够舒服......),我希望能够在远程机器上键入类似“open filename.txt”的内容。并在我的本地计算机上打开TextWrangler。我听说“反向隧道”一词作为一种选择而被抛弃,但我不知道下一步该做什么。非常感谢任何建议 - 谢谢!

6 个答案:

答案 0 :(得分:4)

就个人而言,我使用Cyber​​duck作为我的S / FTP浏览器。在Cyber​​duck的首选项中,您可以定义默认文本编辑器以编辑远程文件。现在我可以在选择文件时点击Cmd + K,它将在TextWrangler中打开。每当我保存时,更改都会自动传输到远程文件。

答案 1 :(得分:3)

我实际上是想做同样的事情,没有人写过,所以我今天想出来了。

这里有2个必需部分和3个可选部分:

  1. 在两台计算机上启用ssh登录(必填)
  2. 设置从远程计算机到计算机的ssh隧道(必需)
  3. 为ssh隧道设置别名(可选)
  4. 在远程计算机上设置TextWrangler的别名(可选)
  5. 设置ssh密钥,这样您就不必每次都输入密码(可选)
  6. 您需要能够从本地ssh到远程运行命令,并且您需要能够从远程ssh到本地,以便它可以向TextWrangler发送命令。

    要设置ssh隧道,您需要在本地计算机上运行命令,如:

    ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]
    

    -f和-N标志将ssh放入后台并让您进入计算机。 -R标志将远程计算机上的端口绑定到本地计算机上的端口。在端口10022上与远程机器联系的任何内容都将发送到本地计算机上的端口22。远程端口可以是您想要的任何东西,但您应该选择一个端口> 1024以避免冲突,因此您不必是root用户。我选择了10022,因为它类似于ssh的默认端口22.用您的用户名和机器名替换括号。

    登录后需要运行一次。为了使命令更容易,您可以在bash配置文件中添加别名。将以下内容添加到您的本地~/.bash_profile

    alias open-tunnel='ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]'
    

    当然,您可以选择自己喜欢的别名。

    设置隧道后,您可以在远程计算机上使用这样的命令:

    ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]//absolute/path/to/file.txt"
    

    -p标志表示使用端口10022(或您之前选择的端口)。这将导致远程计算机连接到本地计算机并在双引号中执行命令,而无需打开交互式ssh会话。引号中的命令是您在本地计算机上运行以在TextWrangler中打开远程文件的命令。

    要使命令更容易,您可以在bash配置文件中添加一个功能。将以下内容添加到您的远程~/.bash_profile

    function edit { if [[ ${1:0:1} = "/" ]]; then abs_path="$1"; else abs_path="`pwd`/$1"; fi; ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]/$abs_path"; }
    

    这假设您没有在远程计算机上安装TextWrangler命令行工具。如果这样做,您应该将该函数命名为edit以外的函数。例如,tw。这里,${1:0:1}查看函数的第一个参数的第一个字符,它应该是文件路径。如果它不以/开头,我们通过将当前工作目录(pwd)添加到开头来计算绝对路径。现在,如果您在/home/jdoe/some/directory/中的远程计算机上运行edit some/other/directory/file.txt,则会在本地计算机上执行以下操作:

    edit sftp://[username on remote machine]@[remote machine hostname]//home/jdoe/some/directory/some/other/directory/file.txt
    

    最后,您应该在两个方向上设置ssh密钥,这样每次都不会提示您输入密码。这是其他人写的指南:http://pkeck.myweb.uga.edu/ssh/

答案 2 :(得分:2)

我不认为这会允许从命令行打开,但是

带有Eclipse

Remote-System-Explorer也支持通过ssh连接编辑文件

答案 3 :(得分:1)

我认为你所指的是通过ssh称为“X11转发”。查看ssh_config(5)联机帮助页以进行配置(或者只使用带有'-X'参数的'ssh')。据我所知,这只适用于X11程序(gvim,xemacs等),因为编辑器实际上是在你连接的主机上运行 - 只有显示内容发生在本地机器上。所以TextWrangler不是一个选项,因为它不是X11程序。

我使用Interarchy(来自nolobe)进行远程编辑。它是一个相当先进的ftp / sftp客户端,它为您提供远程文件的查找器样式视图,并允许您使用您喜欢的编辑器处理这些文件。

如果您不想支付这样的程序,可以使用密歇根大学提供的名为“Fugu”的开源程序,您也可以使用。

答案 4 :(得分:0)

FileZilla offers this functionality as well. You can download it here. Once you've connected to your sftp you can right-click on the text file and open it with the text editor of your choice.

答案 5 :(得分:0)

最小答案

您可以使用Applescript。所以从命令行执行:

osascript  <<EOF
        tell application "TextWrangler"
        activate
        open location {"sftp://myusername:@my.server:22222//home/username/.bashrc"}
end tell
EOF

备注

  1. 显然你不想在每次调用时输入这里的文档,所以我的建议是将这个逻辑放在一个常规的shell脚本中: osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF
  2. 然后调用这样的脚本:

    sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc" 
    
    1. 每次指定一个主机限定的路径都会变得乏味,因此要么在脚本中硬编码,要么通过shell将脚本调用绑定到击键。对于bash: bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""' 现在按Alt-t
    2. 生成大部分命令