Я хотел бы иметь возможность вставлять из системного буфера обмена (или выделения текста) в мою "vi-like" оболочку с помощью клавиатуры. Я обычно использую zsh и иногда bash. В обоих случаях у меня установлена оболочка с vi-подобным поведением ( bindkey -v
/ set -o vi
).
В vim поведение, которое я ищу, доступно с последовательностью клавиш "+p
. Эта конкретная последовательность клавиш не работает должным образом в приглашении оболочки с поддержкой vi. Есть ли способ включить это или похожее поведение, используя только клавиатуру, оставаясь с привязками клавиш в стиле vi в приглашении оболочки zsh или bash?
-- редактировать --
Случай использования: Я часто перемещаюсь между Firefox с помощью дополнения Pentadactyl , эмулятора терминала и самого vim - используя оконный менеджер Xmonad с настраиваемыми клавишами для перемещения. Все три программы имеют привязки клавиш в стиле vi, что очень эффективно (для «памяти пальцев»), поэтому было бы идеально передавать текст между ними, используя только синтаксис vim (или очень похожий синтаксис).
xsel
и копирования предложенного кода с небольшим изменением моего .zshrc (я выбрал «^ P» вместо «^ X», перезаписывая исходное поведение «^ P»)Вот решение для zsh (режим vi), которое оборачивает оригинальные виджеты, так что буфер обмена всегда синхронизирован
Замените
xclip
на ваш любимый инструмент буфера обмена.источник
xterm-termite
.Выбор и буфер обмена - это разные вещи в X Window, и IMHO «окружение рабочего стола», как правило, делает проблему еще более мутной, чем была.
Shift-insert работает для вас? В голых X-приложениях это обязывает вставлять выделение при создании такой привязки.
источник
Это решение работает, если вы установили
oh-my-zsh
и включилиvi-mode
плагин.Решение Жиля
xsel
иzle
основанное на нем решение не сработало для меня. Однако, так как я настроил vim для использования системного буфера обмена по умолчанию (set clipboard=unnamedplus
in~/.vimrc
), я просто набираю vв терминальном обычном режиме, чтобы открыть текущую команду,vim
а затем я могу скопировать ее в X-буфер обмена с любой изvim
команд yank.источник
:term
доступных в новых версиях Neovim и Vim?v
в обычном режиме, чтобы редактировать набранную в настоящее время команду внутри vim, а не в окне терминала.:term
в своем ответе, иначе это не совсем понятно.:term
. Однако я обнаружил, что функциональность, на которую я ссылаюсь, фактически обеспечиваетсяoh-my-zsh
. Я обновил ответ соответственно.