gpt4 book ai didi

javascript - 自定义 IPython Notebook 键盘快捷方式以在编辑模式下复制当前行

转载 作者:可可西里 更新时间:2023-11-01 01:18:01 24 4
gpt4 key购买 nike

在 IPython Notebook 环境中,可以使用 IPython Javascript API 定义自定义键盘快捷键。使用 %%javascript 魔法,可以在 IPython 的交互式控制台中编写一个 javascript,如下所示(示例描述 here ):

%%javascript

IPython.keyboard_manager.command_shortcuts.add_shortcut('r', {
help : 'run cell',
help_index : 'zz',
handler : function (event) {
IPython.notebook.execute_cell();
return false;
}}
);

我想编写一个 javascript,在编辑模式下创建一个快捷方式,将 Ctrl-Alt-Down 绑定(bind)到“复制当前行”的操作——即将光标移动到当前行的开头,选择行,复制行,回车,粘贴。本质上,我想模拟 Eclipse 的键盘快捷键,或 Notepad++ 中的 Ctrl-d,或 Emacs 中的 C-a C-SPACE C-n M-w C-y。 javascript 文件将采用以下形式:

%%javascript

IPython.keyboard_manager.edit_shortcuts.add_shortcut('ctrl-alt-down', {
help : 'run cell',
help_index : 'zz',
handler : function (event) {
[Code that duplicates the line];
return false;
}}
);

尽管我的尝试表明“ctrl-alt-down”是表示快捷键序列的错误方式,而且我找不到任何关于 keyboard_manager 的文档。

我不想使用(例如)AutoHotKey 解决方案,因为我想将此快捷方式限制为 IPython Notebook 的编辑模式。

最佳答案

第一步。

如果不存在,在~/.jupyter/custom/custom.js下新建一个JS文件,添加下一段代码:

/**
*
* Duplicate a current line in the Jupyter Notebook
* Used only CodeMirror API - https://codemirror.net
*
**/
CodeMirror.keyMap.pcDefault["Ctrl-Down"] = function(cm){

// get a position of a current cursor in a current cell
var current_cursor = cm.doc.getCursor();

// read a content from a line where is the current cursor
var line_content = cm.doc.getLine(current_cursor.line);

// go to the end the current line
CodeMirror.commands.goLineEnd(cm);

// make a break for a new line
CodeMirror.commands.newlineAndIndent(cm);

// filled a content of the new line content from line above it
cm.doc.replaceSelection(line_content);

// restore position cursor on the new line
cm.doc.setCursor(current_cursor.line + 1, current_cursor.ch);
};

第 2 步。

重启木星

结果

enter image description here

在下一个环境中测试

wlysenko@wlysenko-Aspire ~ $ google-chrome --version
Google Chrome 53.0.2785.116
wlysenko@wlysenko-Aspire ~ $ jupyter --version
4.1.0
wlysenko@wlysenko-Aspire ~ $ uname -a
Linux wlysenko-Aspire 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

关于javascript - 自定义 IPython Notebook 键盘快捷方式以在编辑模式下复制当前行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244922/

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