--remote-tab-silent
オプションをgvimに渡したい場合を除いて、エイリアスのオプションがほとんどの場合機能することがわかりました(例gvim --serverlist
)-その場合、gvimはオプションをリテラルファイル名として扱いますが、これはまずそうではありません次に、汚染された vim セッションからバッファーをクリーンアップする必要があります。
次のようないくつかのケースでは、別のエイリアスを使用しvim
たり、別の方法で解決したりすることは実用的ではありません。gvim
gvim
gvim /path/to/files
gvim --serverlist
gvim -p /path/to/file1 /path/to/file2
gvim -t tag filename
私の解決策は、 Tom Veinergvim
が提案するように( ~/.bin/gvim
) を囲む次のラッパー スクリプトですが、これは引数がオプションでない場合にのみ既存のサーバーを使用します。それ以外の場合は、新しいサーバーが作成されます。gvim
#!/usr/bin/perl
use v5.10;
sub gvim { exec { '/usr/bin/gvim' } '/usr/bin/gvim', @_; }
if (scalar @ARGV) {
unshift @ARGV, '--remote-tab-silent' unless /^--?/ ~~ @ARGV;
gvim @ARGV
}
else {
chomp(my $serverlist = `gvim --serverlist`);
if (length $serverlist) {
gvim '--remote-send', '<Esc>:tabnew<CR>'
} else { gvim }
}