2013-07-13 5 views
5

Я работаю над реализацией Ace Editor и Ctrl + F отлично подходит для работы встроенного в диалог «Поиск», однако я пытаюсь найти способ изменить из Ctrl + H для Ctrl +R и предотвратить поведение по умолчанию.Ace Editor - изменение CTRL + H KeyBinding

Я просмотрел документы и форумы о работе с привязками клавиш, но не могу определить, какой метод вызывается для создания экземпляра диалогового окна «replace» или его перезаписи.

ответ

12

Заменить команду определена here. можно использовать следующий код, чтобы изменить Ctrl +H для Ctrl +R

editor.commands.addCommand({ 
    name: "replace", 
    bindKey: {win: "Ctrl-R", mac: "Command-Option-F"}, 
    exec: function(editor) { 
     require("ace/config").loadModule("ace/ext/searchbox", function(e) { 
      e.Search(editor, true) 
      // take care of keybinding inside searchbox   
      // this is too hacky :(    
      var kb = editor.searchBox.$searchBarKb 
      command = kb.commandKeyBinding["ctrl-h"] 
      if (command && command.bindKey.indexOf("Ctrl-R") == -1) { 
       command.bindKey += "|Ctrl-R" 
       kb.addCommand(command) 
      } 
     }); 
    } 
}); 

но часть с внутренней командой довольно некрасиво, я бы предложил сделать проблему на хранилище аса либо использовать нормальное имя для него, или забрать replace команд ключ автоматически

+0

Просто для заметки - это не работает @ Сегодня. –

0

Это работает для меня:

editor.commands.addCommand({ 
name: 'replace', 
bindKey: {win: 'Ctrl-R', mac: 'Command-Option-F'}, 
exec: function(editor) { 
ace.config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor, true)}); 
}, 
readOnly: true 
});