TextEditor - 文本编辑器对象 @TextEditor
TextEditor: 文本編輯器對象,爲API hx.window.getActiveTextEditor() 返回值的詳細說明文檔。
TextEditor
TextEditor屬性列表
屬性名 | 屬性類型 | 描述 |
---|---|---|
document | TextDocument | 該編輯器關聯的文檔 |
selection | TextSelection | 當前光標選中的位置 |
selections | Array<TextSelection> | 當前多光標選中的位置集合 |
options | TextEditorOptions | 該編輯器的設置項 |
edit
修改當前編輯器打開的文檔
參數說明
參數名稱 | 參數類型 | 描述 |
---|---|---|
callback | Function(TextEditorEdit) | 文檔編輯操作回調 |
返回值
返回類型 | 描述 |
---|---|
Promise<void> | Promise |
示例
let editorPromise = hx.window.getActiveTextEditor();
editorPromise.then(function(editor) {
let selection = editor.selection;
let document = editor.document;
let word = document.getText(selection);
let reversed = word.split('').reverse().join('');
editor.edit(editBuilder => {
editBuilder.replace(selection, reversed);
});
});
setSelection
設置主選擇區域,該API會首先清除原來的光標選擇,如果要使用多光標,請使用addSelection方法
參數說明
參數名稱 | 參數類型 | 描述 |
---|---|---|
active | Number | 選擇區域中帶光標的一側,詳情見下圖 |
anchor | Number | 選擇區域中不帶光標的一側,詳情見下圖 |
返回值
返回類型 | 描述 |
---|---|
Promise<void> | Promise |
示例
let editor = hx.window.getActiveTextEditor();
editor.then((editor)=>{
editor.setSelection(10,12);
})
addSelection
增加新的選擇區域,調用後會在編輯器內追加一個新一個光標。
參數說明
參數名稱 | 參數類型 | 描述 |
---|---|---|
active | Number | 選擇區域中帶光標的一側,詳情見下圖 |
anchor | Number | 選擇區域中不帶光標的一側,詳情見下圖 |
返回值
返回類型 | 描述 |
---|---|
Promise<void> | Promise |
示例
let editorPromise = hx.window.getActiveTextEditor();
editorPromise.then((editor)=>{
editor.setSelection(10,12).then(()=>{
editor.addSelection(16,18);
});
})
TextDocument
編輯器打開的文檔文件
屬性列表
屬性名 | 屬性類型 | 描述 |
---|---|---|
fileName | String | 文件名稱 |
isDirty | Boolean | 是否是修改狀態 |
isUntitled | Boolean | 是否是無標題文件 |
lineCount | Number | 文檔總行數 |
uri | Uri | 文檔的uri,如果是本地文件,可通過uri.fsPath獲取本地文件路徑 |
languageId | String | 編程語言Id,如’javascript’,’html’等,完整id列表參見這裏 |
workspaceFolder | WorkspaceFolder | 該文檔文件所屬的項目對象 |
getText
獲取指定區域內的文本
參數名稱 | 參數類型 | 描述 |
---|---|---|
range | Range | [可選]文本區域,如果不傳該參數,則獲取整個文檔的內容 |
返回值
返回類型 | 描述 |
---|---|
String | 文本字符串 |
示例
let activeEditor = hx.window.getActiveTextEditor();
activeEditor.then(function(editor) {
// 获取指定区域内的文本
let text = editor.document.getText({
start: 3755,
end: 3802
});
console.log(text);
});
lineAt
獲取指定行號的行信息
參數名稱 | 參數類型 | 描述 |
---|---|---|
lineno | Number | 行號,從0開始 |
返回值
返回類型 | 描述 |
---|---|
Promise<TextLine> | 文本行對象 |
示例
let activeEditor = hx.window.getActiveTextEditor();
activeEditor.then(function(editor) {
// 行号是从0开始
let linePromise = editor.document.lineAt(2);
linePromise.then((line)=>{
console.log("TextLine is:", line.text);
});
});
lineFromPosition
根據光標位置獲取光標所在行。
參數名稱 | 參數類型 | 描述 |
---|---|---|
pos | Number | 光標位置 |
返回值
返回類型 | 描述 |
---|---|
Promise<TextLine> | 文本行對象 |
示例
let activeEditor = hx.window.getActiveTextEditor();
activeEditor.then(function(editor) {
let linePromise = editor.document.lineFromPosition(editor.selection.active);
linePromise.then((line)=>{
console.log("Line info:", line.text, "开始位置:", line.start, "结束位置:", line.end);
});
});
TextEdit
TextEdit: 文檔編輯
TextEdit 屬性列表
屬性名 | 屬性類型 | 描述 |
---|---|---|
range | Range | 要修改的區域 |
newText | String | 要插入的新內容 |
replace static
參數說明
參數名稱 | 參數類型 | 描述 |
---|---|---|
range | Range | 要修改的區域 |
newText | String | 要插入的新內容 |
返回值
返回類型 | 描述 |
---|---|
TextEdit | 文檔編輯對象 |
示例
let activeEditor = hx.window.getActiveTextEditor();
activeEditor.then(function(editor) {
let selection = editor.selection;
let word = editor.document.getText(selection);
editor.edit(editBuilder => {
// 把当前选中的内容由小写转换大写
let toUpperCase = word.toUpperCase();
editBuilder.replace(selection, toUpperCase);
});
});
Range
Range: 文本區域
屬性列表
屬性名 | 屬性類型 | 描述 |
---|---|---|
start | Number | 起始位置 |
end | Number | 結束位置 |
TextLine
TextLine: 文档中的某一行, 为editor.document.lineAt、editor.document.lineFromPosition 返回值。
屬性列表
屬性名 | 屬性類型 | 描述 |
---|---|---|
start | Number | 行起始位置 |
end | Number | 行結束位置,不計算換行符 |
text | String | 行內容,不包含換行符 |