【问题标题】:CUT and PASTE in Ace editorAce 编辑器中的剪切和粘贴
【发布时间】:2023-03-26 14:47:01
【问题描述】:

我正在使用 ace 编辑器,但无法以编程方式剪切和粘贴。对于UndoRedo,我使用了以下代码。如何进行 CUT 和 PASTE?

editor.getSession().getUndoManager().undo(false); 
editor.getSession().getUndoManager().redo(false); 

【问题讨论】:

  • 我也遇到了同样的问题。

标签: jquery ace-editor


【解决方案1】:

对于撤消,最好使用editor.execCommand("undo")(同样用于重做)。

剪切和粘贴比较棘手,因为 ace 中的命令不会修改剪贴板。如果您只需要支持新的浏览器,您可以通过以下方式使用 navigator.clipboard:

// paste
navigator.clipboard.readText().then(function(text) {
    editor.execCommand("paste", text)
})

// copy / cut
var text = editor.getCopyText()
editor.execCommand("copy") // or cut
navigator.clipboard.writeText(text)

旧浏览器更难处理https://github.com/c9/core/blob/c4d1c59dc8d6619bdca3dbe740291cd5cd26352c/plugins/c9.ide.clipboard/html5.js

【讨论】:

    【解决方案2】:

    对于复制/剪切操作,请尝试使用 getCopyText 函数,该函数会复制已选择的文本。

    var copiedText = editor.getCopyText()
    

    为了粘贴内容,您选择可以使用插入功能。

    editor.insert(copiedText)
    

    当您特别在寻找 CUT 功能时,一旦您复制了文本,您就可以创建一个 .insert("") 来替换整个选择,就像 CUT 功能的工作原理一样。

    【讨论】:

    • 对于粘贴,它不会从键盘快捷键(Ctrl + C,Ctrl + X)中提供复制的值。有什么解决办法吗?
    • 如果您愿意,请尝试覆盖 Ctrl-V。但是您是否将复制的文本放在任何全局字段中并尝试在粘贴时使用该变量?
    • 是的,我确实将它存储在全局字段中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    相关资源
    最近更新 更多