Как я могу настроить энергию так, чтобы, когда я отправляю процесс, USR1 сигнализировал, что это сохраняет и выходы (в противоположность созданию .swp файла восстановления)

Вот моя ситуация. У меня есть набор открытых процессов энергии. Вместо того, чтобы проходить один за другим и сохранять/вполне (:x!) я хотел бы отправить все процессы, сигнал - скажем USR1 - и вместо того, чтобы иметь его создает восстановление .swp файл, я хотел бы, чтобы он обычно сохранил файл и выход.

Возможный?

13
задан Philip Hallstrom 3 May 2010 в 17:45
поделиться

2 ответа

Это не так просто, как просто послать каждому процессу vim сигнал, но вы можете довольно близко подойти к тому, что хотите, используя функции клиент / сервер vim:

:help remote.txt

(Вам понадобится версия vim, скомпилированная с параметр + clientserver.)

Вот пример из справки vim:

vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>'    

Он отправляет команды экземпляру vim, работающему как удаленный сервер «BLA», сообщая ему сохранить все файлы и выйти.

Поскольку вы запускаете несколько экземпляров vim, вы, вероятно, захотите использовать параметр --serverlist, чтобы получить список всех зарегистрированных экземпляров сервера, который затем можно перебирать, чтобы отправить команду сохранения и выхода на каждый.

13
ответ дан 2 December 2019 в 00:02
поделиться

Я никогда не пытался обрабатывать сигналы в vim. Не знаю, можно ли это сделать.Вот одна из возможных альтернатив:

Вариант: использовать только один процесс vim

Возможно, вместо того, чтобы открывать тонну процессов vim, вы можете открыть несколько вкладок в gvim (или vim). Таким образом, когда вы захотите выйти, вы сможете выполнить : wqa (написать и выйти из всех).

В vim легче открывать вкладки, если в файле vimrc сделать следующее:

:map <C-Insert> :tabnew<C-M>
:map <C-Delete> :tabclose<C-M>
:map <C-PgUp> :tabprev<C-M>
:map <C-PgDown> :tabnext<C-M>

Приведенные выше привязки позволят Ctrl-insert и Ctrl-delete открывать и закрывать вкладки, а Ctrl-pgup / pgdown перемещает между вкладками очень похоже на firefox.

Если вы хотите, чтобы эти привязки работали и в режиме вставки, вы можете сделать что-то вроде этого в своем файле vimrc

:imap <C-Insert> <C-o>:tabnew<C-M>
:imap <C-Delete> <C-o>:tabclose<C-M>
:imap <C-PgUp> <C-o>:tabprev<C-M>
:imap <C-PgDown> <C-o>:tabnext<C-M>
3
ответ дан 2 December 2019 в 00:02
поделиться