Vimperator копия / вставка


23

Я пробую Вимператор . Я главным образом хотел это для прокрутки hjkl, и мне нравится его система подсказок для следующих ссылок. Эти две функции действительно все, что мне нужно; Я думаю.

Я не против других особенностей, это просто иногда мешает мне.

Больше всего меня раздражает копирование / вставка. Я привык к Ctrl+ c/ Ctrl+ v, я не против использовать другой ярлык, но ..

:help yank указывает, что копирование выделенного текста выполняется с помощью Y, но единственный метод, упомянутый для вставки, это средняя кнопка мыши!

Это так смешно против духа Вима!

Как я могу вставить в Vimperator без использования мыши?


Все ответы на этот вопрос устарели (что имеет смысл, поскольку им семь лет). Если вы попали сюда из Google, то это не те ответы, которые вам нужны (на сегодняшний день)
Артур Ульфельдт

Ответы:


15

Самое лучшее и простое, что вы можете сделать, это переназначить ключи. Это не сложно. Поместите это в ваш _vimperatorrc (или .vimperatorrc в Linux)

noremap <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

<C-v>по умолчанию отображается в режим «Pass next», что означает, что следующая нажатая клавиша отправляется непосредственно в Firefox, без обработки и съедения vimperator. Поэтому приведенные выше сопоставления просто активируют режим «Пропустить следующий» и отправляют соответствующий ярлык.

Существует даже плагин vimperator, который расширяет это и еще больше перераспределяет все общие ярлыки окон , поэтому они ведут себя как положено.


3
для <Cv> (вставка) это должно быть inoremap
hasen

принято по ссылке на плагин! это здорово и
решает

2
Похоже, что в текущей версии (3.8.1) Cc и Cv по умолчанию выполняют копирование и вставку на уровне ОС ... Я не смог ничего найти в журналах изменений, но я только что перешел с Pentadactyl на последнюю Vimperator, Cc и Cv работали так, как я хотел.
Driftcatcher

@hangtwenty кажется правильным, ответ здесь уже устарел
Артур Ульфельдт

36

Я удивлен, что не был дан более точный ответ на этот вопрос. Ссылка на плагин выбранного ответа решила проблему ОП, но на самом деле никто не объяснил, как вставить что-либо в текстовое поле без использования режима сквозного просмотра (Cv).

Если вы находитесь в текстовом поле в режиме INSERT и хотите вставить что-то, очевидное, что нужно сделать в vi-land, - это нажать ESC и p, чтобы вставить. В vimperator это не работает - ESC выводит вас из режима INSERT полностью и в режим, в котором вы работаете со страницей / вкладкой в ​​целом.

Vimperator решает эту проблему с помощью дополнительного базового режима - TEXTAREA. В режиме TEXTAREA вы можете использовать поддерживаемые команды, которые вы используете в vi.

Enter TEXTAREA mode: C-t
Paste:    p
Copy line:    yy
Delete Char:  x
Delete Line:  dd

И т.п.

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


Спасибо за этот комментарий. Это как раз то, что мне нужно, чтобы обернуть голову вимператором и полями формы.
ZweiBlumen

@RevAaron, когда вы входите в режим TEXTAREA, это похоже на традиционную среду VI, и большинство клавиш VI будут работать для редактирования текста? Кроме того, я заметил (снова случайно), когда я нажимаю «d», а затем «s» или «a» в режиме TEXTAREA, он переключает режим в режим «VISUAL». Я был бы признателен, если бы вы могли дать мне некоторую информацию об этом. или даже если вам нравится, я могу задать это как вопрос, тогда вы можете ответить на него, тогда другие воспользуются им.
Мехрад

13

Прямо сейчас vimperator переназначает и Ctrl + C (из «copy» в «cancel») и Ctrl + V (из «paste» в «pass-through»). В Linux предпочтительным методом копирования / вставки является средняя кнопка мыши, так что это не проблема. В Windows это катастрофа с пользовательским интерфейсом, и ее крайне необходимо исправить.

Вы можете скопировать три места: текст с веб-страницы, текст из поля формы и текст из внешнего приложения. Вы можете скопировать в два места: в поле формы и во внешнее приложение. Адрес и командные панели работают как поля формы.

Copying from...
     A web page: 'Y' works, '^C' doesn't
     Form field: 'Y' doesn't work, '^C' does
     Extern application: 'Y' doesn't work, '^C' does
  Copying to...
     Form field: '^V' doesn't work, '^V,^V' does
     External application: '^V' works, '^V,^V' pastes twice
 Or, seen another way
       Copy  Paste
 Page  Y     N/A
 Form  ^C    ^V,^V
 App   ^C    ^V

Обычные пользователи не запомнят эту таблицу. Они никогда не поймут это, потому что это явно не задокументировано, и они не будут читать это, даже если бы это было так. Вместо этого они будут использовать контекстное меню, единственное, что работает везде. Фактически, через несколько недель после того, как я начал использовать Vimperator, я поймал себя на том, что делаю это в совершенно не связанном приложении, чего я никогда раньше не делал.

Нам нужно восстановить ^ C и ^ V до их оригинальных законных функций, таких как копирование и вставка, что означает смещение сочетаний клавиш ^ C = cancel и ^ V = pass-through. На самом деле, обе эти горячие клавиши уникальны для vimperator и не отображаются в vim. ^ V означает «визуальный блок» в vim, который не применяется в vimperator, так что сквозной доступ может быть легко назначен некоторой другой клавише. Я предлагаю обратную косую черту в командном режиме и ctrl + обратную косую черту как в командном режиме, так и в режиме вставки. Это оставляет ^ C. Я думаю, что это должно быть перенесено в ^ S. Это имеет две хорошие мнемоники: это «стоп», и это также горячая клавиша Unix для XOFF, которая бесполезна, но семантически похожа. ^ S в настоящее время "сохранить страницу как" в vimperator, который используется редко и все еще может быть доступен с помощью: save или: saveas.

Отмена также сломана; это был ^ Z, но ^ Z не является сквозным режимом, и нет способа отменить изменения в поле формы без использования мыши. Я не вижу причин не переносить это на другую горячую клавишу, тем более что ^ Z в vim означает приостановку, которая совершенно не связана, и неожиданно оказаться в режиме сквозного прохождения крайне дезориентирует. Я не могу придумать какую-либо произвольную горячую клавишу, чтобы изменить это на, но в первую очередь ^ Z был довольно произвольным, поэтому подойдет любая неиспользуемая горячая клавиша.

Soruce: http://www.mozdev.org/pipermail/vimperator/2008-October/002359.html


2

Я искал способ сделать это некоторое время. Хороший. Но решение noremap от user4126 было не совсем идеальным, если бы я хотел вставить его в командную строку или в текстовое поле, как указывает Джо. Поэтому я настроил его с помощью inoremap и cnoremap на http://charlieharvey.org.uk/page/vimperator_cut_and_paste . Не похоже, что vnoremap поддерживается.

Таким образом, вы можете вставить в командную строку и в текстовые поля, используя сочетание клавиш ctrl-v только один раз. Вставьте следующее в ваш .vimperatorrc и перезапустите Firefox.

noremap <C-v> <C-v><C-v>
inoremap <C-v> <C-v><C-v>
cnoremap <C-v> <C-v><C-v>

noremap <C-c> <C-v><C-c>
inoremap <C-c> <C-v><C-c>
cnoremap <C-c> <C-v><C-c>

2

Я не нашел ответы на эти вопросы полезными, так как нигде не вижу Ctrl+ c. Что я делаю, так это использую ярлык SecureCRT. То есть для копирования со страницы:

Ctrl+Ins

Для вставки: Ctrl+ Vдважды (как кто-то говорит в ответах в другом месте).


Спасибо, добрый сэр. Сопоставление <cc> с <c-ins> решило мою особую проблему.
Стив Вермейлен

1

Попробуйте следующее, если вы предпочитаете работать с мышью, а не с vim:


NextPlease для FireFox 3.6 сейчас :)
Алексей Романов

1

Для краткого ответа - ^ V ^ V (т.е. Ctrl-V Ctrl-V)

Первый Ctrl-V делает "следующий проход нажатия клавиши". Второй Ctrl-V вставляет текст. Это то, что я делаю для большинства текстовых полей.

Если вы используете режим vi для многострочных текстовых полей (установите noinsertmode), вы также можете вставить с помощью p - поэтому, если я хочу вставить URL-адрес другой вкладки в этот тег, я могу перейти на эту вкладку, использовать y, а затем вернуться к эта вкладка. В нижней строке браузера появится надпись «TEXTAREA», и я могу нажать p, чтобы вставить URL-адрес.


0

Я бы предложил использовать

map <C-c> <C-v><C-c>
noremap <C-v> <C-v><C-v>

Потому что, если вы открыли внешний текстовый редактор, простой Cc в окне FF завершит работу внешнего редактора, и вы потеряете все.

BR

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.