2

私は eshell の TRAMP 統合が大好きです。これを使用しcd /ssh:foo:/etcて、リモート マシンに ssh 接続し、その/etc/ディレクトリにアクセスできます。find-file motdこのファイルをローカルの emacs で開くこともでき ます。ただし、sudo を使用してファイルを変更する必要がある場合はどうすればよいでしょうか。次のように、完全なパスを指定できることはわかっています。

find-file /sudo:foo:/etc/motd

しかし、完全なパスを入力することなく、TRAMPs sudo サポートを介してファイルを開く方法はありますか?

4

2 に答える 2

1

私は、私のために働く次のeshellエイリアスを思いついた:

alias sff 'find-file "${pwd}/$1"(:s/ssh/sudo/)'

それが何をするかはかなり明白なはずです。作業ディレクトリ パスが先頭に追加されますが、文字列sshsudo. したがって、ssh 経由でアクセスされるリモート ファイルに対してのみ機能します。ローカルで sudo を使用してファイルを編集することはめったにないので、それは問題ではありません。ただし、複雑さを犠牲にして、ローカルファイルでも機能させることができます。

alias sff 'find-file "${pwd}/$1"(:s,^,/sudo::,:s,::/ssh:,:,)'

つまり、先頭に追加/sudo::し (これは、ローカル ファイルに対して sudo を実行する方法です)、続い::/ssh::. (単に を削除:/ssh:しただけでしたが、eshell の:s///構造は空の置換を受け入れませんでした。)

于 2016-02-02T08:15:47.473 に答える