我正在尝试制作一个 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()
}