【问题标题】:Ace editor - how do I remove/reset indent?Ace 编辑器 - 如何删除/重置缩进?
【发布时间】:2022-11-18 18:18:44
【问题描述】:

我想更改编辑器的行为,以便当用户在空列表项目符号上按 enter 时,他们的光标位置将重置为行的开头(而不是将它们留在缩进量处)。

我试过了:

aceEdit.moveCursorTo(rowToUpdate, 0)

aceEdit.getSession().indentRows(rowToUpdate, rowToUpdate, "")

aceEdit.getSession().replace(range(rowToUpdate, 0, rowToUpdate, 0), "")

但是,所有这三个都将光标留在前一个缩进级别。如何重置行的缩进级别?


更新:添加示例。

* list
    * list 
    * list
    *                  <- user presses enter here
     _

光标是我在上面放置下划线的地方,并且不能使用上面列出的内容以编程方式重置到行的开头。 (用户可以退格缩进以回到开头。)

【问题讨论】:

    标签: ace-editor


    【解决方案1】:

    您可以使用 editor.setOption("enableAutoIndent", false) 来禁用自动缩进。

    如果你想要一种在除列表之外的所有情况下都保持自动缩进的方法,请尝试在 ace 的 github 页面上创建一个问题

    如果你想删除特定行上的缩进,你可以这样做

    var range = ace.Range
    var cursor = editor.getCursorPosition()
    var line = editor.session.getLine(cursor.row)
    var match = /^s**s*/
    if (match) {
        editor.session.replace(new Range(cursor.row, 0, cursor.row, cursor.column), "")
    }
    

    【讨论】:

    • 不过我喜欢自动缩进——在列表中它很棒。我只想重置特定行的缩进。
    • 您所说的“重置缩进”到底是什么意思,您能否展示前后一行的示例?
    • @a 用户 当然,我在上面添加了一个更新。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多