How to place two set of blocks side by side (in JavaScript object style)?

时间:2017-04-10 03:28:42

标签: javascript vim

In other words, how to turn this:

hello:
goodbye:

'Hello'
'Goodbye'

Into this in Vim?

hello: 'Hello',
goodbye: 'Goobye' 

I want to do this because I have a long list of strings that I'm grabbing from an Exel sheet which I need to turn into JavaScript objects

2 个答案:

答案 0 :(得分:1)

就像我在评论中所说,你可能会在Vim中这样做过于复杂化。使用Excel,可以轻松地将两列彼此相邻并将这些结果复制/粘贴到Vim进行最终调整(如果需要)

以下替换命令可能会让您开始使用仅限Vim的解决方案

  

0,/符\ v ^ $ / - (。*)。1S / \ V / \ =子匹配(0).getline( ' '线()+ 3)','

要点

  • 设置从文件顶部到第一个空行减去1
  • 的范围
  • 捕获组中的整行
  • 将整行替换为捕获的组,并附加当前行的内容+ 3

我没有制作+3变量的解决方案

  • 您需要计算出第一个和第二个“列”之间的#lines,以传递替换命令
  • 之后您仍然需要手动删除第二列中的所有行。

答案 1 :(得分:0)

如果您熟悉宏,这将有所帮助。如果不是按键击键并排记录1个块,然后重复使用宏。

  1. 转到文件顶部(在这种情况下,将光标放在 hello:上)并输入以下内容以录制宏。
  2. qq}jdd''pkJA,<escape key>j
    
    1. 这应该为第一个实例正确执行此过程。要重复按@q,如果您需要重复此过程100次,请按100@q

    2. 当您需要运行宏时,请将光标放在下一行,您需要并排配对并运行@q