Из сеанса SSH на удаленный компьютер, как открыть файл в сеансе Vim на моем локальном компьютере

У меня есть ssh-соединение с удаленным компьютером в моем окне терминала, и GVim работает локально как мой текстовый редактор. Я могу смонтировать удаленную машину через SSH и открывать файлы в моем локальном Vim. Я также могу редактировать удаленные файлы в моем локальном Vim через поддержку Vim для редактирования через SCP.

Скажем, я затем использую ag на удаленном компьютере для поиска символа в моем проекте:

[user@remote project]$ ag thingy
include/blah/foo.h
1137:void thingy() {

Что я могу ввести в сеансе SSH, чтобы отправить этот файл в локальный редактор во вкладке? Если бы я был на своей локальной машине, я мог бы сделать что-то вроде gvim -p --remote-tab-silent include/blah/foo.h, но я не думаю, что удаленная система Vim +clientserver может быть перенаправлена ​​через сеанс SSH, не так ли? Будет ли как-то волшебным образом работать, если я настрою пересылку X11? Если да, то как Vim определит, к какому удаленному серверу подключиться для редактирования файла? Может быть, есть какая-то интеграция между сеансом терминала, встроенным в vim, и системой netrw, которую я мог бы использовать вместо этого?

Если бы я хотел развернуть свою собственную систему со сценариями оболочки и netcat и какими-либо пересылающими сокетами по ssh, как бы я мог это спроектировать?


person interfect    schedule 14.08.2020    source источник
comment
Я не совсем уверен, что это актуально для SO, но у нас есть несколько других вопросов о странных трюках с vim и активный тег vim, хотя использование Vim не совсем то же самое, что программирование. Есть ли другой сайт SE, который подходит лучше?   -  person interfect    schedule 14.08.2020
comment
vi.stackexchange.com   -  person phd    schedule 14.08.2020
comment
Я думаю, вы можете легко использовать netrw из локального GVim для открытия удаленных файлов, но не наоборот.   -  person phd    schedule 14.08.2020
comment
Neovim имеет встроенный RPC поверх TCP. Vim не может этого сделать.   -  person Matt    schedule 15.08.2020


Ответы (1)


Механизм +clientserver в системах Linux и Unix использует X11:

Связь между клиентом и сервером происходит через X-сервер. Должно быть указано отображение сервера Vim. Используется обычная защита X-сервера, вы должны иметь возможность открыть окно на X-сервере, чтобы связь работала. Возможна связь между разными системами.

Если вы правильно настроили переадресацию X, вы сможете открыть файл, хотя я не тестировал. Это означает, что удаленная система должна иметь $DISPLAY переменную среды.

Если вы не указали имя сервера явно, оно обычно находится в строке заголовка окна. Первый в моей системе Debian - это GVIM, следующий - GVIM2 и т. Д. Аргументы клиент / сервер должны указываться в командной строке в определенном порядке и сначала в командной строке. Я бы попробовал настроить это на локальном компьютере и только потом попробовал бы его на удаленном компьютере.

person bk2204    schedule 16.08.2020