私は使うウィムたくさん、私は何をすべきか知っています挿入モードでvimを起動する。だからvii
私のファイルにエイリアスがあります.bash_aliases
。
一方、私は子またたくさんあります.gitconfig
。
[core]
editor = vi
コミットメッセージを作成するには、毎回viエディタが開き、挿入モードに入る必要があります。それでvi
代替を使うつもりをして、vii
そうしました。
しかし、問題は、これを行うときにgit commit
vimを挿入モードで開くのではなく、次のエラーが発生することです。
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
によっては、ラッパースクリプト(たとえば)へのフルパスを指定する必要があります。PATH
git
editor = /usr/local/bin/vii
vimを常に挿入モードで開始するには、
startinsert
最後にを追加して設定します.vimrc
。
1 "she-bang"行で書くことはできますが、#!/bin/bash
ismsを含まないスクリプトでは必要ありませんbash
。
2は、 $@
スペースを含む引数でスクリプトが呼び出されないように二重引用符で囲む必要があります。startinsert
引用は必要ありません(しかし悪くはありません)。
答え2
エディタ変数を次に設定します。
[core]
editor = vim -c 'startinsert'
他の答えではありません。エイリアスはシェルの概念なので、ディレクトリにエイリアスを配置することはできません。一般的なアプローチは、指定されたコマンドを実行するための適切なラッパースクリプトを作成することです。
#!/bin/sh
vim -c 'startinsert' "$@"
スクリプトを別の名前で保存し、vii
実行可能にします。必要な場所にスクリプトを配置できますが、通常、これらのスクリプトはグローバルディレクトリではなく$HOME
フォルダに保存されます。$HOME/bin