Вставка от буфера обмена до vi-enabled zsh или оболочки удара

Если Вы, намерение состоит в том, чтобы найти файловые системы с проблемами (т.е. монтирующееся состояние был изменен на ТОЛЬКО ДЛЯ ЧТЕНИЯ из-за ошибки файловой системы), то я сделаю следующее (принимающий расширение* файловые системы):

 tune2fs -e panic [raw-disk-partition-name]

EX:

 tune2fs -e panic /dev/sda1

То, что это делает, испугать систему, таким образом перезагружая сервер, возможно вызывая fsck на проблемную файловую систему для фиксации его. Таким образом серьезная проблема файловой системы решена при наличии системы, фиксируют его автоматически, вместо того, чтобы вывести его в Режим только для чтения, который я не нашел очень полезными. Кроме того, я испугал бы проблемную файловую систему, фиксируя его, чем пытающийся работать с поврежденным, который со временем мог бы нанести больше ущерба.

15
01.12.2011, 08:17
5 ответов

Zsh ничего не поддерживает кроме внутренних регистров, и удар не поддерживает регистр вообще насколько я знаю. В общем и целом оболочки поддерживают команды vi, не команды энергии.

В zsh вот подтверждение концепции доступа к X выборам от командного режима. Для реального использования Вы хотели бы уточнить эти методы. Я использую xsel программа, можно использовать xclip вместо этого; посмотрите, Как скопировать от одного экземпляра энергии до другого использования регистры. Вы найдете функции, которые я использовал в zle руководстве.

vi-append-x-selection () { RBUFFER=$(xsel -o -p </dev/null)$RBUFFER; }
zle -N vi-append-x-selection
bindkey -a '^X' vi-append-x-selection
vi-yank-x-selection () { print -rn -- $CUTBUFFER | xsel -i -p; }
zle -N vi-yank-x-selection
bindkey -a '^Y' vi-yank-x-selection

Функция vi-append-x-selection вставляет ток X выборов после курсора (подобный p или P). Функция vi-yank-x-selection копирует последний уничтоженный или дергавший текст в X выборов. zle -N объявляет функции как zle виджеты (т.е. команды выпуска). bindkey -a привязка наборов для vi командного режима.

9
27.01.2020, 19:50
  • 1
    , Это работало отлично после установки xsel и копируя Ваш предложенный код с небольшой модификацией к моему .zshrc (я выбрал '^P' вместо '^X', перезаписав исходное поведение '^P') –  Dalker 01.12.2011, 08:23

Выбор и буфер обмена являются разными вещами под X Window, и по моему скромному мнению "настольные среды" имеют тенденцию делать проблему еще более темной, чем это было.

shift-insert работает на Вас? На пустом X приложений это связывается со вставкой выбора, когда такая привязка сделана.

3
27.01.2020, 19:50
  • 1
    и буфер обмена, являющийся отличающимся, не действительно релевантны здесь, решение, которое работает с, можно было бы быть легко адаптировать к другому. Настольные среды не изменяют вещь; их распространение сопровождало сдвиг в равновесии сил далеко от выбора и к буферу обмена. –  Gilles 'SO- stop being evil' 01.12.2011, 03:41
  • 2
    shift-insert действительно работает в моей среде, и определенно хорошо знать для использования когда в другой системе. Я однако ищу что-то ближе к фактическим привязкам клавиш энергии для рывка и/или вставке между терминалами, сама энергия и другие программы –  Dalker 01.12.2011, 08:20

Это решение работает, если вы установили oh-my-zsh и включили плагин vi-mode . Решение на основе

Gilles xsel и zle у меня не сработало. Однако, поскольку я настроил vim для использования моего системного буфера обмена по умолчанию ( установить clipboard = un namedplus в ~ / .vimrc ), я просто набираю v в терминале в обычном режиме, чтобы открыть текущую команду в vim , а затем я могу скопировать ее в X-буфер обмена с помощью любой из команд vim yank.

1
27.01.2020, 19:50

Вот решение для zsh (режим vi), которое упаковывает исходные виджеты, поэтому буфер обмена всегда синхронизируется.

Замените xclipна предпочитаемый инструмент буфера обмена.

function x11-clip-wrap-widgets() {
    # NB: Assume we are the first wrapper and that we only wrap native widgets
    # See zsh-autosuggestions.zsh for a more generic and more robust wrapper
    local copy_or_paste=$1
    shift

    for widget in $@; do
        # Ugh, zsh doesn't have closures
        if [[ $copy_or_paste == "copy" ]]; then
            eval "
            function _x11-clip-wrapped-$widget() {
                zle .$widget
                xclip -in -selection clipboard <<<\$CUTBUFFER
            }
            "
        else
            eval "
            function _x11-clip-wrapped-$widget() {
                CUTBUFFER=\$(xclip -out -selection clipboard)
                zle .$widget
            }
            "
        fi

        zle -N $widget _x11-clip-wrapped-$widget
    done
}


local copy_widgets=(
    vi-yank vi-yank-eol vi-delete vi-backward-kill-word vi-change-whole-line
)
local paste_widgets=(
    vi-put-{before,after}
)

# NB: can atm. only wrap native widgets
x11-clip-wrap-widgets copy $copy_widgets
x11-clip-wrap-widgets paste  $paste_widgets
5
20.08.2021, 13:31

Я бы порекомендовал плагин ZSH:https://github.com/kutsan/zsh-system-clipboard. Чтобы установить , запустите:

git clone https://github.com/kutsan/zsh-system-clipboard ~/.zsh/plugins/zsh-system-clipboard

А затем источник файла в вашем.zshrc:

source "$HOME/.zsh/plugins/zsh-system-clipboard/zsh-system-clipboard.zsh"

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

Одна небольшая деталь, о которой позаботился плагин, о которой не говорят другие ответы, — это различие между содержимым системного буфера обмена с новыми строками и без них (см. PR). Эти небольшие проверки ввода в буфер обмена должны гарантировать, что опыт вставки любого типа контента идентичен тому, что происходит в Vim/Neovim.

3
20.08.2021, 13:31

Теги

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