vimエディタでaliasコマンドを実行するには? [閉鎖]

vimエディタでaliasコマンドを実行するには? [閉鎖]

.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で実行されるすべてのコマンドでも発生します。したがって、エイリアスおよび/またはシェル関数定義をソースとして使用する新しいファイルに分割することは賢明です。~/.bashrctmux~/.bash_aliases両方 ~/.vim_bash_envそして~/.bashrc

関連情報