vimおよびemacs 'scp://'リモートファイルパスのBashコマンドライン補完機能

vimおよびemacs 'scp://'リモートファイルパスのBashコマンドライン補完機能

vimシェルを使用するか、emacsシェルで編集するリモートファイルを簡単に指定しますscp

scpスムーズかつ迅速に作業を完了できる場合.ssh/configはい 正しく 設定

vimそれでは、および他のssh有能な編集者に適していないのはなぜですか?私は、標準bash-completionパッケージが私が知っている限り、まだ公開されていないssh認識エディタのための完成機能の利点を享受できると思います。

afuse(使用でき、sshfs「解決方法」として使用する環境では、Shell initで作成されたユーザーレベルのafuse sshfs自動インストーラデーモンオンデマンドバックグラウンドは、リモートファイルシステムをサブツリーにマウントします~/scp/。 )

ベストアンサー1

私はあなたの解決策を試しました。これは、ホームブレークを使用するMac OSX 10.11システムでよりうまく機能するように少し変更されたバージョンです。

まず、rvim_fun.shファイルで以下を定義します。

vi () {
  local params=();
  while [[ ! -z $1 ]]; do
    # test if arg begins a sequence S of characters
    #    - . A-Z a-z 0-9 @ _
    # followed by a colon,
    # if so, we replace S: by scp://S/ to match vim syntax

    if [[ "$1" =~ ^[-.A-Za-z0-9@_]*:.*$ ]]; then
      params=("scp://${1/://}" "${params[@]}");
    else
      params+=("$1");
    fi;
    shift;
  done;
  echo vi ${params[@]};
  $HOME/bin/vi ${params[@]};
}

私はこれが私にとってうまくいくと思います(また、MaxVimを呼び出す〜/ binにviプログラムがインストールされています)。

これで、Macでhomebrewを介してbashコンプリート機能をインストールしました。私がしなければならなかったのは、次のものを.bashrcファイルに入れることだけでした。

case "$-" in
*i*)    source rvim_func.sh 
        complete -F _scp -o nospace vi
        ;;
*)  ;;
esac

したがって、私はホームブレークに関連するもの以外は直接何も得ません。

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

これはホームブルームディスカッション掲示板からのものです…

とにかく、これは今私にとってとてもうまくいっています...ありがとう!

おすすめ記事