Я использую vimperator, когда моя операционная система настроена на альтернативную раскладку клавиатуры. Довольно легко переназначить вещи в режиме вставки и нормальном режиме с помощью inoremap
и nnoremap
в моем .vimperatorrc
, но я не могу найти, как переназначить клавиши в режиме курсора или режиме текстовой области. Как это сделать?
решение1
Также вам может быть полезно знать, что Pentadactyl — дальнейшее развитие Vimperator — позволяет вам легко переназначать клавиши в режимах курсора и текстовой области, :map -modes caret,text-edit
или даже :map -modes command
если вы хотите, чтобы те же самые сопоставления были для обычного, визуального режимов, режимов курсора и редактирования текста.
решение2
РЕДАКТИРОВАТЬ: Если вы хотите выполнить расширенные настройки, как эта, у вас будетмноголегче время, если вы используетеПятипалыйвместо Vimperator. Оставлю это здесь для полноты картины.
Вам нужно будет отредактировать исходный код самого Vimperator, но это на самом деле не так уж и страшно. Вот что вам нужно сделать:
найдите xpi-файл для vimperator
Firefox хранит код своих расширений в
.xpi
файлах, которые по сути являются zip-файлами, содержащими код дополнения. Самый простой способ найти vimperator xpi — установить супер-маленькое дополнениеоткрыть папку профиля, нажмите, alt tчтобы открыть меню инструментов, выберите "открыть папку профиля" и перейдите в подкаталогextensions
. Здесь вы найдете файлы xpi для всех ваших дополнений; найдите тот, в названии которого есть "vimperator". Для меня это[email protected]
.Если у вас есть хороший инструмент поиска, напримерВсеили Spotlight на Mac, вы, вероятно, можете просто ввести в поиск «vimperator» и найти файлы с этим
.xpi
расширением.Скопируйте файл xpi на рабочий стол и измените расширение с
.xpi
на.zip
Откройте zip-архив и перейдите к
common/content/
. Откройте файлeditor.js
в текстовом редакторе .Поиск "addMovementMap"
Вы должны найти что-то вроде этого:
// KEYS COUNT CARET TEXTAREA VISUAL_TEXTAREA addMovementMap(["k", "<Up>"], true, "lineMove", false, "cmd_linePrevious", selectPreviousLine); addMovementMap(["j", "<Down>", "<Return>"], true, "lineMove", true, "cmd_lineNext", selectNextLine); addMovementMap(["h", "<Left>", "<BS>"], true, "characterMove", false, "cmd_charPrevious", "cmd_selectCharPrevious"); addMovementMap(["l", "<Right>", "<Space>"], true, "characterMove", true, "cmd_charNext", "cmd_selectCharNext"); addMovementMap(["b", "B", "<C-Left>"], true, "wordMove", false, "cmd_wordPrevious", "cmd_selectWordPrevious"); addMovementMap(["w", "W", "e", "<C-Right>"], true, "wordMove", true, "cmd_wordNext", "cmd_selectWordNext"); addMovementMap(["<C-f>", "<PageDown>"], true, "pageMove", true, "cmd_movePageDown", "cmd_selectNextPage"); addMovementMap(["<C-b>", "<PageUp>"], true, "pageMove", false, "cmd_movePageUp", "cmd_selectPreviousPage"); addMovementMap(["gg", "<C-Home>"], false, "completeMove", false, "cmd_moveTop", "cmd_selectTop"); addMovementMap(["G", "<C-End>"], false, "completeMove", true, "cmd_moveBottom", "cmd_selectBottom"); addMovementMap(["0", "^", "<Home>"], false, "intraLineMove", false, "cmd_beginLine", "cmd_selectBeginLine"); addMovementMap(["$", "<End>"], false, "intraLineMove", true, "cmd_endLine" , "cmd_selectEndLine" );
Буквы в кавычках — это сопоставления для режима курсора и режима текстовой области. Измените их на любые нужные вам и сохраните файл. Используйте
<C-f>
для сопоставления функции сControl fЗайдите в firefox и удалите vimperator. Это избавит вас от старого xpi, так что вы сможете использовать тот, который мы только что отредактировали
Измените расширение zip-файла обратно на xpi.
Нажмите Alt fв Firefox, перейдите к новому xpi на рабочем столе и выберите «Открыть». Firefox установит его как новое дополнение.
Перезапустите Firefox и наслаждайтесь новыми привязками!
Одна из проблем заключается в том, что если вы обновите vimperator, вам придется сделать это снова с новым xpi, но вы должны иметь возможность просто заменить этот раздел в новой версии на отредактированную версию из старой.