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

Откройте файлы в существующем Gvim на нескольких (новых) вкладках

Я добавил некоторые псевдонимы в мой .bashrc, чтобы открыть группу файлов проекта в gvim, каждый на своей вкладке:

gvim -p <list of file names using absolute paths>

Это хорошо и хорошо, за исключением нескольких групп файлов, которые я могу перемещать между ними в любой момент времени (мой текущий проект использует Ruby on Rails, поэтому это объясняет). Что было бы действительно потрясающе, если бы я мог добавить новые вкладки к существующему экземпляру gvim. В моей последней должности я работал над Vista; Я обошел это, открыв кучу пустых вкладок в gvim, что позволило мне щелкнуть правой кнопкой мыши по имени файла и выбрать "Открыть в существующем No-Name gvim". Теперь я использую Ubuntu, и в контекстном меню нет такой вещи. Есть ли способ сделать это из командной строки?

4b9b3361

Ответ 1

Если vim скомпилирован с опцией clienterver, вы можете это сделать. Начните свой экземпляр vim со следующего флага:

$ gvim --servername GVIM  # GVIM is the server name. It can be anything.

Чтобы открыть дополнительные вкладки в этом экземпляре, вы можете запустить команду:

$ gvim --servername GVIM --remote-tab file1 file2 file3 ...

Функция clienterver в vim очень удобна. Он не ограничивается открытием файлов; его можно использовать для отправки любой команды в vim с помощью командной строки. Например, чтобы закрыть экземпляр vim удаленно, вы можете использовать:

$ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'

Ответ 2

Изнутри Gvim введите :tabe {file_name}. Это откроет именованный файл на новой вкладке. Если вы не любите печатать длинные имена файлов, попробуйте следующее:

:tabnew
:e .

Это откроет новую пустую закладку и откроет браузер файлов. Вы можете щелкнуть мышью по кругу или использовать клавиатуру. Нажмите или нажмите клавишу ввода в файле, который вы хотите открыть. Попробуйте использовать клавиатуру, чтобы поместить курсор над файлом, который вы хотите открыть, а затем нажмите "t". Это открывает выбранный файл на новой вкладке, оставляя браузер файлов открытым на первой вкладке. Это может быть быстрый способ открыть кучу файлов.

Есть много вещей, которые вы можете сделать с вкладками, которые могут облегчить жизнь. Чтобы перейти к соответствующему разделу в справочной системе Vim on line, введите :h tabpage.

Ответ 3

Хотите, чтобы в контекстном меню Windows вы открывали файлы на новой вкладке в открывшемся в настоящее время окне gvim?

Сохраните это как файл с именем temp.reg и дважды щелкните его, чтобы добавить настройки в свой реестр. Не забудьте изменить путь к vim, если ваш отличается.

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim]
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim\command]
@="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""

Теперь у вас есть контекстное меню:

vim context menu

Ответ 4

Пользователи Linux могут использовать этот вид script:

#!/bin/bash

ANS=`pgrep -fx "gvim --servername GVIM"`

echo [email protected]

if [[ ! $ANS ]]; then
    gvim --servername GVIM
fi

if [[ $1 ]]; then
    gvim --servername GVIM --remote-tab "${@}"
fi

И затем отредактируйте файл gvim.desktop для использования этого script:

Exec=/home/user/bin/my_gvim_script.sh %F

Ответ 5

Есть способ:

n*.cpp|tab ba

или если вы хотите разделить:

n*.cpp|sba

Если вы хотите узнать больше:

:help ba

и я не знаю, что такое n, но без него это не сработает.

Ответ 6

Вот мой запуск gvim script. Это продолжение предыдущих ответов. Он обеспечивает выполнение только одного экземпляра gvim, когда gvim вызывается при любых обстоятельствах:

  • gvim вызывается без имени файла при запуске экземпляра gvim; gvim.
  • gvim вызывается без имени файла в присутствии экземпляра gvim; открыта пустая новая вкладка.
  • gvim вызывается с именем файла с экземпляром gvim или без него; открыта вкладка, показывающая файл.

Это будет имитировать стандартное поведение других редакторов.

#!/bin/bash
exec=/usr/bin/gvim  #the path to gvim
if [ $# -eq 0 ]
  then  # no filename given
    if [ -z $($exec --serverlist) ]
      then  # no filename given and no gvim instance
        $exec -f --servername GVIM > /dev/null 2>&1
      else  # no filename given, but a gvim instance exists
        $exec -f --servername GVIM --remote-send ':tabnew<CR>' > /dev/null 2>&1
    fi
  else  # filenames given
    $exec -f --servername GVIM --remote-tab "[email protected]" > /dev/null 2>&1
fi