Могу ли я открыть файл в существующем экземпляре Vim с помощью внешней команды?

20

Некоторые приложения имеют понятие «сеанс» , где вы можете запустить команду для загрузки файла в существующий экземпляр приложения.

Например, когда я печатаю:

$ firefox http://vi.stackexchange.com

Firefox повторно использует существующий процесс Firefox, а не создает новый.

Это возможно с Vim?

ideasman42
источник

Ответы:

22

Вам нужно скомпилировать vim +clientserver, а затем использовать команду vim --servername SERVERдля запуска экземпляра vim и vim --servername SERVER --remote FILEоткрытия файла в именованном экземпляре vim.


только macOS

MacVim запускает сервер по умолчанию - вы можете использовать его mvim --remote-tab-silentдля открытия файла на новой вкладке в существующем экземпляре MacVim или mvim --remote-silentдля открытия файла в новом буфере на той же вкладке.

craigp
источник
4

Хотя ответ @ craigp верен, мне было удобнее просто добавить его, --remote-silentне беспокоясь об именах серверов
(предполагается, что вы не хотите обращаться к именованным экземплярам vim) .

Это запустит сервер или использует его, если он еще не запущен.

Это можно назвать так:

gvim --remote-silent '+cal cursor(line,col)' some_file

например:

gvim --remote-silent '+cal cursor(102,4)' src/code.c

Мне пришлось использовать другой метод перемещения курсора из-за этой удаленной инициализации.

ideasman42
источник