拼接命令.

This commit is contained in:
lijiahangmax
2024-01-18 00:55:36 +08:00
parent bf3211bf1b
commit 281ea033b8
4 changed files with 36 additions and 2 deletions

View File

@@ -93,8 +93,8 @@
const session = ref<ITerminalSession>();
// TODO
// sftp
// 代码片段
// sftp
// 发送命令
const writeCommandInput = async (e: KeyboardEvent) => {

View File

@@ -44,6 +44,7 @@ export default class TerminalSessionHandler implements ITerminalSessionHandler {
case 'interrupt':
case 'enter':
case 'commandEditor':
case 'checkAppendMissing':
return this.session.canWrite;
case 'disconnect':
return this.session.connected;
@@ -181,6 +182,36 @@ export default class TerminalSessionHandler implements ITerminalSessionHandler {
this.session.disconnect();
}
// 检查追加缺失的部分
checkAppendMissing(value: string): void {
// 获取最后一行数据
const buffer = this.inst.buffer?.active;
let lastLine = (buffer?.getLine(buffer?.viewportY + buffer?.cursorY)?.translateToString() || '').trimEnd();
// 边界检查
const lastLineLen = lastLine.length;
const spinPartLen = value.length;
let checkEnd;
if (spinPartLen >= lastLineLen) {
checkEnd = lastLineLen;
} else {
checkEnd = spinPartLen;
}
// 获取缺失的数据
let append = undefined;
for (let i = 0; i < checkEnd; i++) {
if (lastLine.endsWith(value.substring(0, checkEnd - i))) {
append = value.substring(checkEnd - i, spinPartLen);
break;
}
}
// 全部缺失
if (append == undefined) {
append = value;
}
// 追加
this.pasteTrimEnd(append);
}
// 截图
async screenshot() {
try {

View File

@@ -240,6 +240,8 @@ export interface ITerminalSessionHandler {
disconnect: () => void;
// 截图
screenshot: () => void;
// 检查追加缺失的部分
checkAppendMissing: (value: string) => void;
// 关闭 tab
closeTab: () => void;
// 切换到前一个 tab