23

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

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

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

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

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

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

8 ответов8

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

И т.п.

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

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, который расширяет это и еще больше перераспределяет все общие ярлыки окон, поэтому они ведут себя как положено.

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 дважды (как кто-то говорит в ответах в другом месте).

1

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

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

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

1

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

0

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

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

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

BR

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .