如何在 vimperator 中重新映射插入符号模式和文本区域模式下的按键?

如何在 vimperator 中重新映射插入符号模式和文本区域模式下的按键?

我使用 vimperator 并将操作系统设置为备用键盘布局。使用 和inoremapnnoremap我的 中,在插入模式和正常模式下重新映射内容非常容易.vimperatorrc,但我找不到如何在插入符号模式或文本区域模式下重新映射键。我该怎么做?

答案1

另外,您可能还需要了解,Pentadactyl(Vimperator 的进一步开发)允许您轻松地重新映射插入符号和文本区域模式下的按键,:map -modes caret,text-edit或者即使:map -modes command您想要在正常、可视、插入符号和文本编辑模式下使用相同的映射。

答案2

编辑:如果你想进行这样的高级自定义,你需要很多如果你使用五指龙而不是 Vimperator。为了完整性,这里就不多说了。


您需要编辑 Vimperator 本身的源代码,但这其实并不可怕。您需要做的如下:

  1. 找到 vimperator 的 xpi 文件

    Firefox 将其扩展的代码存储在.xpi文件中,这些文件基本上是包含附加组件代码的 zip 文件。找到 vimperator xpi 的最简单方法是安装超小附加组件打开配置文件文件夹,按下alt t打开工具菜单,选择“打开配置文件文件夹”,然后导航到子目录extensions。在这里,您可以找到所有附加组件的 xpi 文件;查找名称中带有“vimperator”的文件。对我来说,它是[email protected]

    如果你有一个很好的搜索工具,比如一切或者在 Mac 上搜索 Spotlight,您可能只需搜索“vimperator”并查找带有.xpi扩展名的文件。

  2. 将 xpi 文件复制到桌面,并将扩展名从 更改.xpi.zip

  3. 打开 zip 存档并导航至。在文本编辑器中common/content/打开文件editor.js

  4. 搜索“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

  5. 进入 Firefox 并卸载 vimperator。这将删除旧的 xpi,以便您可以使用我们刚刚编辑的那个

  6. 将 zip 文件的扩展名改回 xpi

  7. 按下Alt fFirefox,导航到桌面上的新 xpi,然后选择打开。Firefox 会将其安装为新附加组件。

  8. 重新启动 Firefox 并享受新的绑定!

一个问题是,如果您更新 vimperator,您将需要使用新的 xpi 再次执行此操作,但您应该能够用旧版本中编辑的版本替换新版本中的此部分。

相关内容