我目前的目标是改变行为,使所有删除整行或几行的vim命令仅在满足某些条件时才执行。本主题帮助我覆盖了删除功能:Replacing the standard behaviour of the delete line hotkey "dd" in Ace editor's Vim mode with a function call但是我无法从删除函数被覆盖的函数中调用它的原始实现,以便在不满足条件的情况下它的行为正常。
import * as ace from 'ace-builds';
this.aceEditor = ace.edit(this.editor.nativeElement);
ace.require('ace/keybindings/vim');
this.aceEditor.setKeyboardHandler('ace/keyboard/vim');
ace.config.loadModule('ace/keyboard/vim', () => {
var VimApi = ace.require('ace/keyboard/vim').CodeMirror.Vim;
VimApi.defineOperator(
'delete',
this.deleteCurrentLineIfSolved.bind(this)
);
});
deleteCurrentLineIfSolved(event, signal) {
// if condition is met, call original implementation of delete here
// else, do nothing
}
字符串
删除函数似乎存储在某种形式的'operators'数组中,github.com/ajaxorg/ace/blob/master/src/keyboard/vim.js#L3182,但我不确定如何导入或访问它。
如果你能帮忙的话,我将不胜感激。
1条答案
按热度按时间oxalkeyp1#
这个功能似乎不存在,所以我在/keyboard/vim. js文件中实现了一个返回delete函数的函数,并成功地使用了它。