gpt4 book ai didi

keyboard-shortcuts - 在 Etherpad 中,除了粗体、斜体和下划线(罢工、项目符号……)之外,还有其他操作的快捷方式吗?

转载 作者:行者123 更新时间:2023-12-04 06:43:31 28 4
gpt4 key购买 nike

好吧,几乎所有内容都在标题中:除了将文本加粗、斜体或下划线之外,还有其他快捷方式可以执行其他操作吗?或者任何允许这样做的插件?

据我的一位同事说,源代码似乎不包含这些东西,但也许我们错过了什么?

最佳答案

Etherpad 包含一个名为 ACE2(最初是 AppJet 代码编辑器)的嵌入式富文本编辑器,它似乎负责键盘快捷键处理。
ace.js默认嵌入的文件曾经被缩小,因此在旧版本的 Etherpad 中很难读取,但您可以直接在 infrastructure/ace 中读取原始源文件。 part of the source code ,从中产生缩小版本。有关更多信息,请查看 ACE2's README .
更新的版本(至少是 etherpad.org 的)似乎包含了普通的 ACE2 JS 源。

键盘快捷键处理代码位于 ace2_inner.js ,内 handleKeyEvent() 功能。基于此,开箱即用支持的键盘快捷键如下(在浏览器的快捷键(如剪切/复制/粘贴)之上):

  • 回车-特殊etherpad回车
  • Tab 或 Shift+Tab - 缩进或减少项目符号列表
  • Ctrl+Z - 特殊的 etherpad 撤消
  • Ctrl+Y - 特殊的 etherpad 重做
  • Ctrl+B - 粗体
  • Ctrl+I - 斜体
  • Ctrl+U - 下划线
  • Ctrl+H - 删除
  • Ctrl+S - 保存修订

  • 确实没有删除线或项目符号列表,也没有什么看起来像快捷方式的简单扩展机制,因此您可能需要弄脏手;-)

    如果您有自己的 Etherpad 部署,最简单的方法可能是修改 ACE2 的源代码以处理其他快捷方式,然后重新构建 ace2.js如果需要,缩小版本(根据 README 中的说明)。
    这是如何处理删除线切换的 Ctrl+S 快捷键和项目符号列表切换的 Ctrl+L 的示例。删除线快捷方式禁用内置浏览器的另存为...快捷方式,我认为这是一个奖励,但如果您不喜欢那样,您可以随时选择 S 以外的其他键。
    ace2_inner.js 中插入以下代码片段在处理其他快捷方式的类似块之间,在第 3200 行附近:

    /* Ctrl+S toggles striketrough, and prevents triggering the browser's Save dialog */
    if ((!specialHandled) && isTypeForCmdKey &&
    String.fromCharCode(which).toLowerCase() == "s" &&
    (evt.metaKey || evt.ctrlKey)) {
    // ctrl/cmd-s (strikethrough toggle)
    fastIncorp(13); // don't ask me ;-)
    evt.preventDefault();
    toggleAttributeOnSelection('strikethrough');
    specialHandled = true;
    }
    if ((!specialHandled) && isTypeForCmdKey &&
    String.fromCharCode(which).toLowerCase() == "l" &&
    (evt.ctrlKey)) {
    // ctrl/cmd-L (bullet list toggle)
    fastIncorp(9); // seriously, don't ask me ;-)
    evt.preventDefault();
    doInsertUnorderedList();
    specialHandled = true;
    }

    如果您无法重建缩小版本,您也可以尝试使用缩小名称直接修补它。这是对我来说的上述片段的缩小版本,虽然是 YMMV,但我没有检查缩小是否稳定并且每次都重复使用相同的缩短名称。搜索“y”(带引号)以找到 handleKeyEvent() 的缩小版本内 ace.js :

    if ((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="s"&&(i.metaKey || i.ctrlKey)){G(13);\\ni.preventDefault();c("strikethrough");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="l"&&(i.metaKey||i.ctrlKey)){G(9);\\ni.preventDefault();As();Cp=true;}

    最后,如果您不控制etherpad 部署,您也许可以使用浏览器内的 GreaseMonkey 实现类似的功能。修补默认值的脚本 handleKeyEvent()功能。作为 Hook 编辑器的起点,请尝试检查 window.pad*对象,例如 window.padeditor .例如,在编辑器中选择一些文本并在控制台中尝试以下操作:

    > window.padeditor.ace.execCommand('bold')
    > window.padeditor.ace.execCommand('insertunorderedlist')

    关于keyboard-shortcuts - 在 Etherpad 中,除了粗体、斜体和下划线(罢工、项目符号……)之外,还有其他操作的快捷方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10698889/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com