每当删除一行时,在 vim 中记录行号

log line number in vim whenever a line is deleted

我有一个生成包含数千行的 txt 文件的应用程序。我必须通过文件(使用 vim)手动删除一些行。但是,如果需要更改格式,我可能需要再次生成相同的文件。这将使我再次浏览文件以删除相同的行。

避免手动重复删除的解决方案是vim在我删除一行时以某种方式记录行号。然后我可以使用一些脚本来删除这些行。是否有可能在 vim 中获得此行为?

否则,是否有任何其他编辑器可以实现此行为?我必须删除很多行,手动记录每个行号是不可行的。

根据 phd and wxz, I was able to use git-diff of the file to extract the deleted lines by using node package 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}`)
    });
})

另一种解决方案或说 hack 是在文件的每一行中附加行号,并在删除所需行后提取未删除的行号。