Texstudio 宏将选择内容更改为括号内

Texstudio 宏将选择内容更改为括号内

我正在尝试制作一个 TexStudio 宏,将选择范围扩展到任何周围括号的内部。例如,如果光标位于 中的某个位置,name它将\label{name}选择name

{}(如果光标周围根本没有,它就不会执行任何操作。)

我可以找到如何对选定的文本采取行动,但不知道如何首先改变选择。

答案1

这个第一个基本答案对于选择一个单词是通用的,无论它是否在括号内,它的效果与现有的快捷键 Ctrl+D 相同

在宏脚本编辑器中Add
按为其命名,例如SelectWord
选择一个shortcut组合并输入

%SCRIPT
cursor.select(cursorEnums.WordUnderCursor)

注意如果单词是“成对的”,例如

\开始{文档}
\结束{文档}

与 TXS 编辑一样,编辑时会同时突出显示两个单词,并同时编辑其中一个更改两个匹配的单词。

为了更加有用(和危险),
你可以添加第二个变体,例如清晰的词以避免按删除键

%SCRIPT
cursor.select(cursorEnums.WordUnderCursor)
cursor.removeSelectedText()
cursor.clearSelection()

请注意,相同的“配对”将清除两个准备替换的支撑条目。

上述简单版本仅适用于单个单词,但如果您想要更复杂的版本{全选}或 {DeleteAll} 例如 {Goodbye World你需要这个版本

%SCRIPT
// grab the line the cursor is on
var ln = cursor.lineNumber();
var tl = editor.text(ln);

// get text before and after cursor
var beforeText = tl.substr(0, cursor.columnNumber());
var afterText = tl.substr(cursor.columnNumber(), tl.length);

// search for last { before cursor, and first } after cursor
var lh = beforeText.lastIndexOf('\{');
var rh = afterText.indexOf('\}');
if (lh>=0 && rh>=0){
// match found, select everything between the {braced pair}
cursor.selectColumns(lh+1, rh+cursor.columnNumber())
// To delete everything between the braces uncomment the next two lines
// cursor.removeSelectedText()
// cursor.clearSelection()
}

相关内容