MacVim Открыть файл в существующем окне - PullRequest
48 голосов
/ 13 августа 2010

Есть ли способ настроить MacVim для открытия нового файла в текущем окне в работающем экземпляре MacVim?В настоящее время у меня есть настройки MacVim «Открывать новые файлы на новой вкладке в текущем окне», но в идеале я хотел бы просто открыть новые файлы так, как работает «: e new_file», без вкладок.

Моя основная мотивация заключается в том, что в настоящее время я использую NERDTree и Bufexplorer для своего рабочего процесса и мне вообще не нужны вкладки.Я также использую PeepOpen, который великолепен, за исключением того, что он всегда открывает файлы в соответствии с предпочтениями MacVim, поэтому лучшее, что я могу сделать, - это открыть его в текущем окне MacVim с новой вкладкой.

Ответы [ 7 ]

51 голосов
/ 15 октября 2010
  1. Обновление до MacVim 7.3
  2. Зайдите в Общие настройки
  3. В разделе «Открыть файлы из приложений:« выбрать »в текущем окне»
  4. В раскрывающемся меню под этой опцией выберите «и установите список аргументов»
28 голосов
/ 14 августа 2012

Вы также можете добавить:

alias mvim='open -a MacVim'

к вашему .bash_profile

Мне кажется, это самое простое решение.

15 голосов
/ 29 мая 2014

Я лично использую такую ​​команду, после того как все здесь увидел и прибегнул к экспериментам с тем, что

mvim --help 

обнаружилось.

Я обнаружил, что

mvim --remote-tab-silent foo.txt

работал для меня, а затем я вскоре добавил псевдоним к своему .profile.Да, это раздражает, если вы не передаете ему файл после опции, но кто все равно открывает пустой файл без имени?

14 голосов
/ 10 января 2011

Вы можете также рассмотреть этот совет по редактированию основного скрипта mvim.

Улучшение mvim для MacVim

Эта модификация немного менее серьезна и также работает:

MacVim поддерживает вкладки, но, к сожалению, вызывает `mvim несколько раз из командной строки приводит к открытию нескольких отдельных окон, вместо нескольких вкладок в одном окне. Я сделал следующее изменения в скрипте mvim для исправления этого.

Добавьте следующую строку в начало файла, под комментарием раздел:

tabs=true

Заменить структуру if в нижней части файла следующим:

# Last step:  fire up vim.
if [ "$gui" ]; then
  if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then
    exec "$binary" -g $opts --remote-tab-silent ${1:+"$@"}
  else
    exec "$binary" -g $opts ${1:+"$@"}
  fi
else
  exec "$binary" $opts ${1:+"$@"}
fi

(из Открытие вкладок MacVim из командной строки )

Очевидно, что они оба немного неоптимальны, так как вам придется поддерживать взлом при обновлении MacVim. Но они помогли мне открыть несколько файлов из терминала в новых вкладках Mac Vim.

4 голосов
/ 27 августа 2012

@ Ответ Бьёрна Винклера показывает, как это сделать для файлов, открываемых через механизм поиска и другие механизмы открытия ОС.

Если вы хотите, чтобы она работала с командой mvim, найдите файл mvim и измените строки внизу с

if [ "$gui" ]; then
    # Note: this isn't perfect, because any error output goes to the
    # terminal instead of the console log.
    # But if you use open instead, you will need to fully qualify the
    # path names for any filenames you specify, which is hard.
    exec "$binary" -g $opts ${1:+"$@"}
else
    exec "$binary" $opts ${1:+"$@"}
fi

до

if [ "$gui" ]; then
  # Note: this isn't perfect, because any error output goes to the
  # terminal instead of the console log.
  # But if you use open instead, you will need to fully qualify the
  # path names for any filenames you specify, which is hard.

  #make macvim open stuff in the same window instead of new ones
  if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then
    exec "$binary" -g $opts --remote ${1:+"$@"}
  else
    exec "$binary" -g $opts ${1:+"$@"}
  fi
else
  exec "$binary" $opts ${1:+"$@"}
fi

Это также сделает все файлы, открытые из командной строки, открытыми в том же окне.

Также, если вы хотите, чтобы файл открывал тот же буфер, если этот файл уже открыт вместо разделения или добавления новой вкладки

au VimEnter,BufWinEnter * NERDTreeFind на ваш gvimrc (чтобы не мешать вашему обычному vim)

(последняя часть требует, чтобы у вас было установлено NERDTree)

1 голос
/ 21 мая 2014

Я нашел ответ Азриэля отличным, но он не работает, если файл не существует. Эта маленькая функция делает то же самое, но вы также можете создавать новые файлы.

mvim () { touch "$@" && open -a MacVim "$@"; }

Просто добавьте его в .bash_profile. Затем вы можете отредактировать новый файл foo как

mvim foo

, и он откроется в новой вкладке.

1 голос
/ 13 августа 2010

Вот как я это сделал:

В VIM есть команда «tabo», которая делает текущую вкладку единственной вкладкой.Я добавил следующее в мой ~ / .vimrc:

autocmd BufWinEnter,BufNewFile * silent tabo

. Это делает так, что при каждом создании нового буфера или вводе нового буфера текущая вкладка автоматически становится единственной вкладкой.Эта команда не влияет на мои буферы, поэтому эффект - именно то, что я хочу: открыть файл в текущем экземпляре MacVim и не добавлять никаких новых вкладок.

...