.bashrc ファイルにエイリアスを設定する
alias l='ls -l'
Vimの内部:
:! l
[No write since last change]
/bin/bash: l: command not found
shell returned 127
答え1
エイリアスは継承されないため、Vimが起動したシェルはエディタを起動したシェルから利用可能なエイリアスを継承しません。
この~/.bashrc
ファイルは対話型シェルセッションでのみ読み取ることができ、Vimで実行されているシェルは対話型ではありません。さらに、bash
デフォルトでは、シェルは非対話型シェルのエイリアスを拡張しません。
Vim内で呼び出されたコマンドを実行するには、l
そのコマンドを外部コマンド(ファイルのどこかにあるスクリプトなど$PATH
)として使用できる必要があります。または$BASH_ENV
別のファイル(非対話型シェルで実行する前に読み取ったファイル)を使用して、実行したい操作に適したシェル環境を設定できます。
「トリック」を使用するには、ファイル(またはそれに対応するエントリ)がこの環境変数を必要なインストールコードを含むファイルのパス名に設定していることを$BASH_ENV
確認してください。~/.vimrc
let $BASH_ENV = "~/.vim_bash_env"
~/.vim_bash_env
それから馬を作る
shopt -s expand_aliases
source ~/.bashrc
シェルセッションが非対話型であっても、エイリアス拡張が可能で~/.bashrc
エイリアスを定義できるファイルを読み取ります。
その後、Vimコマンドを使用してエイリアスを使用できます!
。
指すファイルを$BASH_ENV
読んで実行することに注意してください。どのこれは、ファイルが他の操作(起動や他のサービスなど)を実行している!
場合にVimで実行されるすべてのコマンドでも発生します。したがって、エイリアスおよび/またはシェル関数定義をソースとして使用する新しいファイルに分割することは賢明です。~/.bashrc
tmux
~/.bash_aliases
両方 ~/.vim_bash_env
そして~/.bashrc
。