默认为 CRLF。 我想将其更改为 LF,因为我正在处理 BASH 脚本。 请帮忙。
我已浏览文档,但找不到任何解决方案或示例。
//https://github.com/Microsoft/vscode/blob/013501950e78b9dde5c2e6ec3f2ddfb9201156b7/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.ts#L30
code = code.replace(/\r\n/g, "\n");
我的解决方案
model.setEOL(monaco.editor.EndOfLineSequence.LF)
用途:
const editor = monaco.editor.create(document.getElementById('container'), {});
const model = editor.getModel()
model.setEOL(monaco.editor.EndOfLineSequence.LF);
editor.getValue();
您尝试过 setEOL() 吗? 我也面临同样的问题,但我使用了 ITextModel 接口,所以不能使用 setEOL。
我也遇到了那个噩梦。
这是我使用 Firepad 和 Monaco 处理它时给出的解决方案:
const normalizeLineEndings = (str) => {
return str?.replace(/\r\n|\r/g, "\n") ?? "";
}
const normalizeEditorModelText = (model, monaco) => {
if (model.getEndOfLineSequence() === monaco.editor.EndOfLineSequence.LF) {
return;
}
// newer Monaco versions recommend pushEOL over setEOL
model.pushEOL(monaco.editor.EndOfLineSequence.LF);
model.applyEdits([
{
range: model.getFullModelRange(),
text: model.getLinesContent().reduce((r, e) => `${r}${normalizeLineEndings(e)}`, "")
}
]);
}
// call it as soon a you create your model
const model = monaco.editor.createModel(text, language);
normalizeEditorModelText(model, monaco);
// IF YOU ALREADY HAVE CODE THAT NEEDS FIXING: CALL IT ON THE FIRST FIREPAD SYNC
firepadInstance.on('synced',...);
这些是我处理过的无意义错误:
MonacoAdapter.prototype.operationFromMonacoChanges
有关我的GH 帖子的更多详细信息。