vim - 每当删除一行时,在 vim 中记录行号
问题描述
我有一个应用程序可以生成一个包含数千行的 txt 文件。我必须通过文件手动删除一些行(使用vim)。但是,如果需要更改格式,我可能需要再次生成相同的文件。这将使我再次浏览文件以删除相同的行。
避免重复手动删除的解决方案是,当我删除一行时,vim 会以某种方式记录行号。然后我可以使用一些脚本来删除这些行。是否有可能在 vim 中获得这种行为?
否则,是否有任何其他编辑器可以获得这种行为?我必须删除很多行,手动记录每个行号对我来说是不可行的。
解决方案
正如phd和wxz所建议的,我能够使用git-diff
该文件来提取已删除的行,方法是使用节点包gitdiff-parser来解析差异。
const gitDiffParser = require('gitdiff-parser')
const { exec } = require("child_process");
let p = new Promise( (res,rej) => {
exec("git diff -U0 file.txt", (error, stdout) => {
res(stdout)
});
});
p.then(s=>{
diff = gitDiffParser.parse(s);
diff[0].hunks.forEach(element => {
console.log(`start: ${element.oldStart}, end: ${element.oldStart + element.oldLines - 1}`)
});
})
另一种解决方案或说黑客是在文件的每一行中附加行号,并在删除所需的行后提取未删除的行号。
推荐阅读
- c# - mysqlException 未处理 c#
- sql - Jaspersoft Studio JDBC 到 Sql Server 不喜欢日期
- sql - 按数字顺序对表格进行排序
- c++ - 复合布尔与不太可能/可能的性能
- python - 将数据保存在 Config 表中的行中与保存为 Postgres JSONField 中的键 - 哪个更好?
- python - 如何为 numpy 数组制作非方形滚动窗口?
- reactjs - Polaris 导航 onclick 方法
- regex - 正则表达式从模式中提取字符串
- c# - 如何获取经过时间在.net核心中使用httpclient异步获取REST GET请求/等待
- python - 使用 TF-IDF 方案从给定句子中提取关键短语的任何有效解决方法?