Подтвердить что ты не робот

MacVim Открыть файл в существующем окне

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

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

4b9b3361

Ответ 1

  • Обновить до MacVim 7.3
  • Перейдите в Общие настройки
  • В разделе "Открыть файлы из приложений:" выберите "в текущем окне
  • В выпадающем меню под этой опцией выберите "и установите arglist"

Ответ 2

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

alias mvim='open -a MacVim'

на ваш .bash_profile

Это кажется самым простым решением для меня.

Ответ 3

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

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

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

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

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

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:+"[email protected]"}
  else
    exec "$binary" -g $opts ${1:+"[email protected]"}
  fi
else
  exec "$binary" $opts ${1:+"[email protected]"}
fi

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

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

Ответ 4

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

mvim --help 

.

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

mvim --remote-tab-silent foo.txt

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

Ответ 5

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

Если вы хотите, чтобы он работал с командой 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:+"[email protected]"}
else
    exec "$binary" $opts ${1:+"[email protected]"}
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:+"[email protected]"}
  else
    exec "$binary" -g $opts ${1:+"[email protected]"}
  fi
else
  exec "$binary" $opts ${1:+"[email protected]"}
fi

Это приведет к тому, что все файлы, открытые из командной строки, будут открываться в том же окне.

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

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

(эта последняя часть требует установки NERDTree)

Ответ 6

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

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

autocmd BufWinEnter,BufNewFile * silent tabo

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

Ответ 7

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

mvim () { touch "[email protected]" && open -a MacVim "[email protected]"; }

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

mvim foo

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