/usr/bin/に既存のコマンドのエイリアスバージョンを配置します。

/usr/bin/に既存のコマンドのエイリアスバージョンを配置します。

私は使うウィムたくさん、私は何をすべきか知っています挿入モードでvimを起動する。だからvii私のファイルにエイリアスがあります.bash_aliases

一方、私はまたたくさんあります.gitconfig

[core]
    editor = vi

コミットメッセージを作成するには、毎回viエディタが開き、挿入モードに入る必要があります。それでvi代替を使うつもりをして、viiそうしました。

しかし、問題は、これを行うときにgit commitvimを挿入モードで開くのではなく、次のエラーが発生することです。

error: cannot run vii: No such file or directory
error: There was a problem with the editor 'vii'.
Please supply the message using either -m or -F option.

.bash_aliasesこれはbashとは何の関係もないにもかかわらず、gitがファイルを見つけられないことを明らかに示しています。それが1つあることを直接確認してください/usr/bin/vii。それでは実行してみてください。

質問

viのエイリアスバージョンを入れることviiはできますか/usr/bin/

(そしてそれを使用することを提案しないでくださいgit commit -m "<commit message>"。vimを挿入モードにする必要がある他の状況があります。)

答え1

エイリアスは現在、各シェル環境の内部にあります。拡大する現在実行中のシェル(bashあなたの場合)によって実行されるため、ターミナルに入力/貼り付けて実行する操作にのみ影響します。

これには少なくとも2つのオプションがあります。

  • 作る包装紙名前付きスクリプトがvii実行され、そのスクリプトを挿入することvim -c 'startinsert'をお勧めします/usr/local/bin/(または$HOME/binそのスクリプトが存在し、検索パスにある場合)。スクリプトには次の項目のみを含める必要があります。

    #!/bin/sh1
    exec vim -c 'startinsert' "$@" 2
    

    (を実行して実行可能にします。)/otherプログラムの設定chmod +x /usr/local/bin/viiによっては、ラッパースクリプト(たとえば)へのフルパスを指定する必要があります。PATHgiteditor = /usr/local/bin/vii

  • vimを常に挿入モードで開始するには、startinsert最後にを追加して設定します.vimrc


1   "she-bang"行で書くことはできますが、#!/bin/bashismsを含まないスクリプトでは必要ありませんbash
2は、   $@スペースを含む引数でスクリプトが呼び出されないように二重引用符で囲む必要があります。startinsert引用は必要ありません(しかし悪くはありません)。

答え2

エディタ変数を次に設定します。

[core]
    editor = vim -c 'startinsert'

他の答えではありません。エイリアスはシェルの概念なので、ディレクトリにエイリアスを配置することはできません。一般的なアプローチは、指定されたコマンドを実行するための適切なラッパースクリプトを作成することです。

#!/bin/sh
vim -c 'startinsert' "$@"

スクリプトを別の名前で保存し、vii実行可能にします。必要な場所にスクリプトを配置できますが、通常、これらのスクリプトはグローバルディレクトリではなく$HOMEフォルダに保存されます。$HOME/bin

関連情報