Я могу заставить Tmux сказать Vim, когда его область теряет фокус?

.gvfs каталоги являются точками монтирования (иногда). Можно хотеть использовать one_fs опция в Вашей rsnapshot конфигурации (так, чтобы это передало --one-file-system к rsync).


Gvfs является реализацией файловой системы уровня библиотеки, реализованной в библиотеках, записанных проектом Gnome (в особенности libgvfscommon). Приложения, связанные с этой библиотекой, могут использовать файловую систему API для доступа к ftp, sftp, webdav, самбе, и т.д.

Gvfs похож на FUSE, в котором он позволяет файловым системам быть реализованными в коде пространства пользователя. FUSE требует одноразового сотрудничества ядра (таким образом, это только доступно на поддерживаемых версиях поддерживаемых Ose), но затем может использоваться любым приложением, так как это включает нормальную файловую систему API. Gvfs может только использоваться через библиотеки Gnome, но не нуждается ни в каком специальном сотрудничестве от ядра так работы над большим количеством операционных систем.

Быстрый эксперимент на Ubuntu 10.04 показывает это, в то время как приложение получает доступ к файловой системе Gvfs, ~/.gvfs точка монтирования для a gvfs-fuse-daemon файловая система. Эта файловая система позволяет любому приложению получать доступ к файловым системам Gvfs, не будучи должен связаться с библиотеками Gnome. Это - файловая система FUSE, реализация которой перенаправляет обычные вызовы файловой системы к вызовам Gvfs.

gvfs-fuse-daemon файловая система не предоставляет доступа пользователю root, только пользователю, запускающему приложение (это до каждой отдельной файловой системы для управления полномочиями пользователя root; классическим случаем, где корень не имеет каждой силы, является NFS, где доступы от корня ни на ком обычно не отображаются).

6
03.03.2012, 00:09
2 ответа

Это, вероятно, лучше всего сделано с помощью vimклиент-серверная модель. Существует некоторое хорошее руководство об использовании его в :help remote.txt.

Во-первых, Вам будет нужен a vim клиент скомпилировал с +clientserver опция. Если Ваше распределение не упаковывает его этот путь, получает источник (через apt-get source, abs, и др.), и добавляют ту опцию.

После того как это сделано, необходимо будет снова переплести ключи tmux так, чтобы при изменении окон, это также отправило что-то как следующее к активному окну:

vim --servername foo --remote-send '<C-\><C-N>:w<CR>'  

Что-то как следующее должно работать (не протестированный):

bind-key 0 run-shell "vim --servername foo --remote-send '<C-\><C-N>:w<CR>'" \; select-window -t :0
6
27.01.2020, 20:27
  • 1
    Это - хорошее направление, но существует слишком много способов переключить области. Я мог бы select-pane, last-pane, swap-pane, или даже нажмите область. Существуют так же, как много способов переключиться на другое окно. Я не могу снова переплести каждый возможный способ активировать различную область. Я смотрю, затем, для способа заставить команды работать каждый раз я активирую область. Возможно, это не возможно в tmux. –  Peeja 03.03.2012, 20:42

Кто-то еще уже сделал эту работу для Вас в плагине энергии - https://github.com/sjl/vitality.vim

От README:

(Vit) прихожане являются плагином, который делает (V) игра im приятно с (i) Термин 2 и (t) мультиплексор.

При использовании энергии и tmux вместе, Вы могли бы также интересоваться vimux плагином.

По умолчанию, когда Вы звоните, RunVimTmuxCommand vimux создаст горизонтальную область 20% высотой под Вашим текущим tmux, разделяют на области и выполняют команду в нем, не теряя фокус энергии. После того как та область существует каждый раз, когда Вы называете RunVimTmuxCommand снова, команда будет выполняться в той области.

Думайте повторно выполняя тесты часто.

2
27.01.2020, 20:27
  • 1
    На самом деле это не то, что делает Живучесть. Живучесть отображается, фокус iTerm терял/получал коды — которые инициировали, когда Вы изменяете окна GUI — в Vim FocusLost/Gained события, но это не замечает, изменяете ли Вы tmux окна. –  Peeja 19.04.2012, 15:47
  • 2
    @Peeja: ах, хорошо. Я неправильно читал его, спасибо за разъяснение. –  Hamish Downer 20.04.2012, 10:31
  • 3
    vitality.vim OP, теперь делает это с ветвлением tmux: github.com/sjl/vitality.vim/issues/2 github.com/aaronjensen/tmux –  Aaron Jensen 19.02.2013, 06:49

Теги

Похожие вопросы