Monaco 编辑器 - 使用文本预填充查找控件
Monaco editor - Pre-populate find control with text
我在我的 React 应用程序中托管了一个 Monaco 编辑器。
到目前为止,我已经让编辑器在安装编辑器时打开查找控件,但我需要用一些文本预先填充它。
目前的代码是这样的:
...
class CodeEditorMonaco extends Component {
constructor (props) {
super(props)
this.editorDidMount = this.editorDidMount.bind(this)
this.editor = null
}
editorDidMount (editor, monaco) {
editor.focus()
editor.getAction('actions.find').run()
}
render () {
return (
<div className='code-editor'>
<MonacoEditor
width='100%'
height='75vh'
language='json'
editorDidMount={this.editorDidMount}
ref={editor => { this.editor = editor }}
/>
</div>
)
}
}
...
我认为 API 文档不清楚这是否可行。
我的第一反应是
editor.getAction('actions.find').run('text here')
但这似乎不起作用
当您在编辑器本身中突出显示一个词,然后按 CMD+F
时,您会得到预填充文本的查找控件,所以我相信这是可以实现的。
如有任何帮助,我们将不胜感激。
查找控件:
有一种方法可以做你想做的事,那就是完全按照你已经描述的去做:
为您要搜索的字词选择文本
editor.setSelection(new monaco.Range(18, 8, 18, 15));
触发查找动作
editor.trigger('', 'actions.find');
或
editor.getAction('actions.find').run('');
你可以在 Monaco playground 上试试。
const editor = monaco.editor.create(document.getElementById("container"), {
value: "{\n\t\"dependencies\": {\n\t\t\n\t}\n}\n",
language: "json"
});
const model = editor.getModel();
const range = model.findMatches('d')[0].range;
editor.setSelection(range);
editor.getAction('actions.find').run();
首先,从模型中获取要查找的字符串的范围。
其次,设置selection。
三、触发select动作
我在我的 React 应用程序中托管了一个 Monaco 编辑器。
到目前为止,我已经让编辑器在安装编辑器时打开查找控件,但我需要用一些文本预先填充它。
目前的代码是这样的:
...
class CodeEditorMonaco extends Component {
constructor (props) {
super(props)
this.editorDidMount = this.editorDidMount.bind(this)
this.editor = null
}
editorDidMount (editor, monaco) {
editor.focus()
editor.getAction('actions.find').run()
}
render () {
return (
<div className='code-editor'>
<MonacoEditor
width='100%'
height='75vh'
language='json'
editorDidMount={this.editorDidMount}
ref={editor => { this.editor = editor }}
/>
</div>
)
}
}
...
我认为 API 文档不清楚这是否可行。
我的第一反应是
editor.getAction('actions.find').run('text here')
但这似乎不起作用
当您在编辑器本身中突出显示一个词,然后按 CMD+F
时,您会得到预填充文本的查找控件,所以我相信这是可以实现的。
如有任何帮助,我们将不胜感激。
查找控件:
有一种方法可以做你想做的事,那就是完全按照你已经描述的去做:
为您要搜索的字词选择文本
editor.setSelection(new monaco.Range(18, 8, 18, 15));
触发查找动作
editor.trigger('', 'actions.find');
或
editor.getAction('actions.find').run('');
你可以在 Monaco playground 上试试。
const editor = monaco.editor.create(document.getElementById("container"), {
value: "{\n\t\"dependencies\": {\n\t\t\n\t}\n}\n",
language: "json"
});
const model = editor.getModel();
const range = model.findMatches('d')[0].range;
editor.setSelection(range);
editor.getAction('actions.find').run();
首先,从模型中获取要查找的字符串的范围。 其次,设置selection。 三、触发select动作