В моей реализации редактора мне нужно определять, когда люди перемещаются вверх и вниз в редакторе с помощью клавиатуры. Я легко могу сделать это в режиме редактирования ACE по умолчанию, фиксируя клавиши вверх и вниз.
Однако с VIM это сложнее, так как навигационные клавиши vim должны захватываться только в режиме навигации. Я могу проверить, использует ли редактор режим Vim, но не могу понять, как определить, в каком режиме находится VIM.
Вот что у меня есть на данный момент для захвата клавиш:
$("pre[lang]").on("keyup", function(event) {
updateDocument();
// up and down handling - force a preview refresh
if (event.keyCode === 38 || event.keyCode === 40)
te.previewRefresh();
else if (te.lastStyle.keyboardHandler === "vim") {
var vim = require("ace/keyboard/vim").Vim;
// How to get active Vim mode in document?
//
// if (vim is in navigation mode)
// te.previewRefresh();
}
});
Любая помощь будет оценена.
Возможно, есть лучший способ перехватить навигацию с помощью клавиатуры при изменении row
. Я играл с редактором change
event и deltas, но это выглядело еще более сложным и ненадежным, чем перехват ключа. Любые предложения о том, что я мог пропустить, будут полезны.