如何将文本追加到Gvim或vi中的行尾

zig*_*ggy 3 unix vi vim text

我在Windows上使用gvim并且有一个文件,其中有几行看起来像这样

Select '305','TableA
Select '313','TableB
Select '313','TableC
Run Code Online (Sandbox Code Playgroud)

我想在每行的末尾添加以下行.

', count(*) from [Tablename] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Run Code Online (Sandbox Code Playgroud)

结果看起来像这样(注意[TableName]被实际的表名替换.

Select '305','TableA', count(*) from TableA where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Select '313','TableB', count(*) from TableB where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Select '313','TableC', count(*) from TableC where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Run Code Online (Sandbox Code Playgroud)

我可以添加最后附加文本

%s/$/', count(*) from [Tablename] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')/g
Run Code Online (Sandbox Code Playgroud)

但我被困在如何读取表名并将其替换为[Tablename].

基本上我只是想生成几个查询.有任何想法吗?我知道表名将始终是从行尾到第一个'字符的文本,但我如何阅读它并将其添加到修改后的字符串?

谢谢

Sam*_*nck 10

你需要做一点反向引用.
将搜索词更改为:
\(\a\+\)$这将与表名匹配.围绕搜索项\(\)允许在
替换字符串中将其引用到您想要显示表名的替换字符串中.
结果应该是这样的
%s/\(\a\+\)$/\1', count(*) from [\1] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')/g