我使用 vimperator 并将操作系统设置为备用键盘布局。使用 和inoremap
在nnoremap
我的 中,在插入模式和正常模式下重新映射内容非常容易.vimperatorrc
,但我找不到如何在插入符号模式或文本区域模式下重新映射键。我该怎么做?
答案1
另外,您可能还需要了解,Pentadactyl(Vimperator 的进一步开发)允许您轻松地重新映射插入符号和文本区域模式下的按键,:map -modes caret,text-edit
或者即使:map -modes command
您想要在正常、可视、插入符号和文本编辑模式下使用相同的映射。
答案2
编辑:如果你想进行这样的高级自定义,你需要很多如果你使用五指龙而不是 Vimperator。为了完整性,这里就不多说了。
您需要编辑 Vimperator 本身的源代码,但这其实并不可怕。您需要做的如下:
找到 vimperator 的 xpi 文件
Firefox 将其扩展的代码存储在
.xpi
文件中,这些文件基本上是包含附加组件代码的 zip 文件。找到 vimperator xpi 的最简单方法是安装超小附加组件打开配置文件文件夹,按下alt t打开工具菜单,选择“打开配置文件文件夹”,然后导航到子目录extensions
。在这里,您可以找到所有附加组件的 xpi 文件;查找名称中带有“vimperator”的文件。对我来说,它是[email protected]
。如果你有一个很好的搜索工具,比如一切或者在 Mac 上搜索 Spotlight,您可能只需搜索“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 fFirefox,导航到桌面上的新 xpi,然后选择打开。Firefox 会将其安装为新附加组件。
重新启动 Firefox 并享受新的绑定!
一个问题是,如果您更新 vimperator,您将需要使用新的 xpi 再次执行此操作,但您应该能够用旧版本中编辑的版本替换新版本中的此部分。