首页 > 其他分享 >1.replace by**.#**

1.replace by**.#**

时间:2023-03-27 21:47:22浏览次数:23  
标签:const log vscode .# replace position line currentEditor

该条笔记由Elder在2023/3/27 21:31:30推送

注册命令、绑定快捷键

//package.json
"activationEvents": [
	"onCommand:hello.log"
],
"main": "./extension.js",
"contributes": {
	"commands": [
		{
			"command": "hello.log",
			"title": "Hello World"
		}
	],
	"keybindings": [
		{
			"key": "ctrl+shift+h",
			"command": "hello.log",
			"when": "editorTextFocus"
		}
	]
},

文本替换实现

//extension.js
function activate(context) {

	let disposable = vscode.commands.registerCommand('hello.log', function () {
		// 获得当前编辑器
		const currentEditor = vscode.window.activeTextEditor;
		if (!currentEditor) {
			return;
		}
		// 正则表达式匹配.#结尾的文本
		const reg =/(\S+)(#)$/;
		// 获得选中内容和当前document
		const {selection,document} = currentEditor;
		// 获得选中内容的光标位置,正则匹配后的位置包含开始位置,结束位置
		const position = document.getWordRangeAtPosition(selection.anchor,reg);
		console.log(position);
		if(!position){
			return vscode.window.showInformationMessage('请输入#结尾');
		}
		// 获得文本内容
		const docText = document.getText(position);
		// 文本正则化  返回数组比如 ['//实现乘法表#', '//实现乘法表', '#', index: 0, input: '//实现乘法表#', groups: undefined]
		const tempArr = reg.exec(docText);
		console.log(tempArr);
		const prefix = tempArr && tempArr[1];
		console.log(prefix); ////实现乘法表
		const replaceText = `${prefix}`+"\t模板添加时间:"+`${new Date().toLocaleDateString()}`+'#';

		// 替换文本
		currentEditor.edit(editBuilder => {
			editBuilder.replace(position,replaceText);
		})
		.then(()=>{
			//修改光标位置
			const line = position.start.line;
			const index = document.lineAt(line).firstNonWhitespaceCharacterIndex;
			currentEditor.selection = new vscode.Selection(
				new vscode.Position(line,replaceText.length+index),
				new vscode.Position(line,replaceText.length+index)
			);
			vscode.window.showInformationMessage('写入成功');
		})
	});

	context.subscriptions.push(disposable);
}

标签:const,log,vscode,.#,replace,position,line,currentEditor
From: https://www.cnblogs.com/myfriend/p/implementation-according-to-the-ending-character-z1jyil

相关文章

  • 2.translate baidu
    该条笔记由Elder在2023/3/2721:37:12推送(百度翻译开发)定义命令(package.json)"activationEvents":[ "onCommand:translate.helloWorld" ]设置contributes(package.......
  • 1.1偏导
    几何意义对x的偏导,假设y不动,平面y=\(y_0\)与曲面的交线得到曲线,去直线的任意一点对x做导数,就是对x的偏导,上面的阐述也间接说明对某个变量偏导将其他看作常数(上面几何......
  • c#后台执行js弹窗art.dialog,成功后跳转页面
     stringmsbox="<script>dialog({title:'修改成功',content:'修改成功',width:'180px',height:'100px',okValue:'确定',ok:function(){";          ......
  • 3.27每日总结
    <!DOCTYPEhtml><html><head><title>信2105-2杨帅飞的个人主页</title><metahttp-equiv="content-type"content="text/html;charset=UTF-8"><styletype="t......
  • 150. 逆波兰表达式求值
    给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。注意:有效的算符为'+'、'-'、'*'和'/'。......
  • 2023.3.27
    整理了一点状压。拜托,但是我的状压真的学的和个什么东西一样啊。AcWing 91.最短Hamilton路径 1#include<bits/stdc++.h>2usingnamespacestd;3constint......
  • 常见的问题系列---【org.springframework.dao.InvalidDataAccessApiUsageException: E
    报错信息org.springframework.dao.InvalidDataAccessApiUsageException:Errorattemptingtogetcolumn'createTime'fromresultset.Cause:java.sql.SQLFeatureNo......
  • 如何单机部署多个 MySQL 8.0 实例 ?
    在服务器资源有限的情况下,可利用该方案快速搭建各类mysql架构方案。各MySQL实例共享一个mysqld主程序,但各实例数据目录是独立的,存放在不同的文件夹中;好了、废话不多......
  • MD5Code.java
    MD5Code.javajava技术篇2009-03-1417:09:05阅读14评论0字号:大中小订阅packageorg.lxh.myzngt.util;publicclassMD5Code{/**下面这些S11-S44实际......
  • 1047. 删除字符串中的所有相邻重复项
    给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回......