Вставка из vim в терминале в Google Docs (Firefox + Vimperator) - нужно понимать

У меня были некоторые проблемы с копированием и вставкой текста из vim в терминале в документ Google Docs (далее - диск) (далее GDd) в браузере FF (с Vimperator).

Примечание:

  • У меня есть файл, открытый в Vim 7.2 в терминале
  • :version отображает как +clipboard, так и +xterm-clipboard
  • ] Я нахожусь на Ubuntu 10.04 LTS, поэтому я не думаю, что это связано с Unity
  • Я хочу использовать Vim, а не GVim или gedit ...
  • Я большой поклонник навигации без мыши, поэтому решение с помощью мыши оказалось не тем, что я хотел.
  • У меня есть решение, но мне нужно понимание.

То, что я пробовал и где оно мне досталось:

  • Снятие всего текста файла с помощью: ggvGy позволяет мне:
    • вставить его с помощью мыши средняя кнопка , НЕ с Ctrl+v или Shift+Insert
      1. здесь, в текстовой области для ввода текста вопроса
      2. в gedit
      3. , но НЕ в GDd, куда я хочу его вставить, даже если я переключаю Vimperator в режим сквозного доступа с помощью Insert
    • НЕ отображается в XClip после xclip -o
    • Из gedit я могу скопируйте и вставьте текст в GDd (сквозной режим Vimperator не требуется).
  • :%! !xclip -i (или :first, last)
    1. сообщает весь файл (точнее, все строки) как отфильтрованный, хотя shell возвращает 1
    2. `xclip -o 'ничего не возвращает (пусто) или возвращает ранее скопированное значение
    3. с 2. неудивительно, но я вообще не могу вставить не только в GDd, но и в gedit или сюда
  • установка буфера обмена (:set clipboard=unnamed) на неназванное не помогает
  • использование "+y или "*y для всего текста файла действительно помогает

Итак, вопрос (на самом деле это три, скажем, «разделить», и я буду):

  1. , почему средняя кнопка мыши вставляет разные вещи, чем Ctrl + v, и как узнать, что будет быть вставленным с каждым?
  2. , почему просто дергание (без регистров) работает с мышью, но не с клавиатурой / XClip?
  3. , почему не помог неназванный регистр? После установки он должен сделать unnamed и * регистры одинаковыми?
3
задан 21 September 2012 в 13:44

2 ответа

  1. Linux имеет два буфера обмена (названный "основной буферный" и "вторичный буфер"). Каждый используется для мыши скопировать/вставить, и другой для Ctrl-C/Ctrl-V. Так, при выборе чего-то (скажите для удаления его), содержание того, что Вы вставляете буфер обмена с помощью Ctrl-C, все еще там неповреждены.

  2. Если Вы хотите скопировать, не дергая попытку выбрать Ваш текст, желаемый, чтобы скопировать и нажать CTRL+SHIFT+C затем CTRL+SHIFT+V к скопировать/вставить этому

Я надеюсь, что это помогло бы

4
ответ дан 21 September 2012 в 13:44

По умолчанию буфер обмена заполняется, только если вы делаете визуальный выбор (используя v или, что эквивалентно, вашу мышь). (Во всем последующем мы говорим о «старом» буфере обмена X, основном буфере). Чтобы повлиять на буфер обмена с помощью «y» даже без визуального выделения, необходимо :set clipboard=unnamed. Я не знаю, почему в вашем первом примере xclip -o не показывает содержимого; должно. У меня есть гипотеза об этом, однако, см. Ниже.

У меня 10.04. Я начинаю vim.

:set clipboard
clipboard=autoselect,exclude:cons\|linux

Я набираю случайный текст:

asd fa sdf
asdf

Теперь я делаю ggVGy. В другом окне терминала я набираю

xclip -o

xclip показывает мне правильно содержимое файла. Я могу вставить его в любое место с помощью средней кнопки мыши, например, здесь:

asd fa sdf
asdf

То же самое, если я просто начну визуальный выбор с «v», перемещаюсь и дергаю с «y». Однако, если я сделаю «уу» (восстановить текущую строку без визуального выделения), буфер обмена не обновится.

Хорошо, теперь я делаю

:set clipboard=unnamed

Я делаю ggyy (перейти к первой строке, вернуться к безымянному регистру без использования визуального выбора). Теперь xclip -o показывает «asd fa sdf», и я могу вставить его средней кнопкой мыши; буфер обмена X был заполнен командой yank.

Итог

Не касаясь vimperator, он работает в моей системе, как и ожидалось. Пожалуйста, повторите вышеизложенное (без использования vimperator, см. Ниже), чтобы убедиться, что когда вы делаете ggVGy, xclip -o показывает содержимое (в отличие от вашего примера).

Моя гипотеза состоит в том, что vimperator по какой-то причине сбрасывает буфер обмена X. Попробуйте отделить обычную сессию vim от vimperator:

  1. Если вы выбираете что-то в терминале с помощью мыши (левая кнопка, без Ctrl-Shift-C), можете ли вы вставить ее средней кнопкой to vimperator?

  2. Если вы визуально выбираете что-то с помощью vi, можете ли вы вставить его с помощью средней кнопки мыши в gedit (по-видимому, вы можете) и увидеть это с помощью xclip -o ] (вы говорите, что не можете, но я в это не верю :-); в противном случае средняя кнопка мыши не будет работать)?

0
ответ дан 21 September 2012 в 13:44

Другие вопросы по тегам:

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