Я обнаружил, что опция --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
Мое решение - следующий скрипт-обертка вокруг gvim
(~/.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 }
}