vim,重新格式化文本以进行编程

vim,重新格式化文本以进行编程

我有一个大文件,里面有如下几行

2 没有到达指定传输网络的路由

3 没有到达目的地的路线

我想将其转换为编程语言

{2,"没有到达指定交通网络的路线"},

{3,"没有到达目的地的路线"},

我该如何做呢?

答案1

基本转换是,

sed 's|^\([0-9]\)\(.*\)|{\1,"\2"}|g' file.txt > file2.txt

vim

:%s/\([0-9] \(.*\)/{\1,"\2"}/g

这将涵盖以以下格式开头的行,

行上有 N 个文本...

其中N是一位数。
可以进一步扩展为其他形式。

答案2

在您的案例中,一个简单的正则表达式就足够了(也是最好的解决方案)。但是,在其他一些情况下,记录可能会更好。

有一个简单的宏示例vim 文档,第 12.1 节,以及进一步的说明:help q

简而言之:

  1. 键入q后跟一个字母(该字母是register录制宏的位置)。
  2. 执行一些命令,根据需要修改文本,使用 Vim 的所有功能。
  3. 将光标移至下一行。
  4. 按下q停止录音。

要播放宏,请按@,然后按录制宏的位置的字母。要重新播放最后一个宏,请按@@。在播放宏之前输入一个数字,即可根据需要重复播放该宏。

因此,对于您来说,可以将这些行转换为如下形式:

2 No route to specified transit network
{2, "No route to specified transit network"},
  1. 将光标置于其中一行上。
  2. 按下qa(寄存器的选择a是任意的)。
  3. 准确按下此键(包括引号和空格)I{<esc>f cl, "<esc>A"},<esc>j
  4. 按下q停止录音。
  5. 按下100@a并高兴地观看宏的播放。:-)

我将从步骤 3 开始将每个命令的解释留给读者。;-)

当然,这不是唯一的解决方案。你可以用很多不同的方法完成第 3 步。

答案3

这个 vim 命令能实现你想要的功能吗?

%s/^\(.\)\ \(.*\)$/{\1,\ "\2"},/g

答案4

:%s/^\s*\(\d\+\)\s\+\(\S.\{-}\)\s*$/{\1, "\2"}/

相关内容