2010-08-13 3 views
43

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

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

+0

Удостоверьтесь, что вы рассматриваете более новые ответы как этот, так и другие: http://stackoverflow.com/a/23927976/724752 –

ответ

48
  1. Обновление MacVim 7,3
  2. Перейти в Общие настройки
  3. В разделе «Открытые файлы из приложений:» выбрать «в текущем окне»
  4. В раскрывающемся меню ниже этой опции выберите «и set arglist "
+20

Это работает только для файлов, открытых в Finder. Выполнение 'mvim filename.txt' из терминала по-прежнему открывает несколько окон. См. [Это обсуждение рассылки] (http://vim.1045645.n5.nabble.com/How-do-I-open-a-file-from-the-Terminal-into-MacVim-s-current-window- td1220082.html) –

+12

Командная строка была именно той проблемой, с которой я столкнулся. Подведем итог этой ссылке: добавьте псевдоним vi = "open \" mvim: // open? Url = file: // $ 1 \ "" в ваш .bash_profile, а затем, когда вы выполните «vi foo», он откроет foo на новой вкладке в вашем существующем окне MacVim. Потрясающие! –

+3

Я узнал, что вы также можете сделать 'mvim --servername VIM - путь к файлу/to/file.txt' (re: @mattb спасибо за ссылку на это обсуждение списка рассылки. ), чтобы открыть в текущем окне. Вам просто нужно знать имя окна, которое вы можете найти в верхней части рядом с именем файла и каталогом – Will

1

Это, как я достиг этого:

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

autocmd BufWinEnter,BufNewFile * silent tabo 

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

+0

Это полностью отключает вкладки. – peritus

+0

Да, как упоминает @peritus, это не совсем хорошее решение, так как в основном то, что он говорит, «всякий раз, когда вы открываете новый буфер, установите текущую вкладку на единственную вкладку», которая фактически полностью отключает табуляции. Это было хорошо для меня, так как я никогда не использовал вкладки, но другие пользователи должны знать. См. Ответ от @ bjorn-winckler выше для реального решения. – davertron

+1

Да. Это определенно предупреждение для тех, кто любит вкладки, но массивный +1 для тех из нас, которые используют лучшие методы, чем табы :) – kenny

14

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

Improving mvim for MacVim

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

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

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

tabs=true 

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

# 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 

(от Open MacVim tabs from command-line)

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

+0

Это хорошее решение. Не могли бы вы также положить фактическое исправление в теле ответа? Ссылки могут исчезнуть в будущем. – Ovesh

+0

Вторая ссылка больше не работает. Интересно, что это за решение. Это похоже на то, что я хотел. – Woody

+0

https://web.archive.org/web/20110205015906/http://webexpose.org/2008/10/13/open-macvim-tabs-from-command-line/ – natchiketa

26

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

alias mvim='open -a MacVim'

к вашим .bash_profile

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

+4

Да - эта настройка плюс "Настройки" -> «Открыть файлы из приложений» на «и установить список арх» (или «с вкладкой для каждого файла» для тех, кто * делает *, как вкладки - открытие в разделенном окне - тоже вариант) отлично работает, спасибо! –

+1

Что нового? С этим псевдонимом, если я нахожу 'vim ~/foo', тогда терминал будет выходить из строя с помощью' Файл/Пользователи/hobbes3/foo не существует. '. С обычным 'vim' он создаст новый файл под названием' foo'. – hobbes3

+0

@ hobbes3 Я нахожу, что в большинстве случаев открытие определенного файла - плохая идея. Я почти всегда нахожусь в навигации по каталогу, а затем выполняя «mvim.». Это открывает текущий каталог в vim и устанавливает рабочий каталог в тот же каталог. Оттуда вы можете создавать новые файлы внутри vim, используя ': e foo' или NerdTree или что у вас есть. Или вы всегда можете коснуться ~/foo, если вы действительно хотите создать файл из командной строки. – Dan

4

@ Ответ 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 установлен)

+0

Я пытался это сделать, но я не могу найти файл «mvim». К какому файлу относится ссылка? – lawdawg

1

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

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

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

mvim foo 

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

+0

Вышеприведенная команда не работает, если аргумент пуст. Я немного изменил его, чтобы открыть файл без названия, если имя файла не указано. 'mvim() {([[-z $ @]] || коснуться« $ @ ») && open -a MacVim« $ @ »; } ' –

14

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

mvim --help 

оказался.

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

mvim --remote-tab-silent foo.txt 

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

+1

Спасибо! Предыдущие предложения не дали мне то, что я хотел, но это было сделано! +1 :-) – SaxDaddy

+1

'mvim --remote-silent foo.txt' для тех, кто предпочитает никаких вкладок. – matlehmann

Смежные вопросы