使用VIM Visual Block连接块

时间:2010-06-30 16:07:38

标签: vim

我尝试通过连接字符串块来使用VIM构建我的SQL查询。例如,我在VIM的三个选项卡中有以下字符串:

# block one
 where c = '123'
 where c = '2345'
 ... 

# block two
set b = 12
set b = 345
...

# block three
update myTable set a = 'abc', 
update myTable set a = '23423', 
...

每个块包含100行(SQL查询的片段)。我想将这些块连接到一个完整的SQL查询:块1 +块2 +块3(100行),如下所示:

# sql queries
update myTable set a = 'abc', set b = 12 where c = '123'
update myTable set a = '23423', set b = 345 where c = '2345'
...

忽略第一行#...,只是为了解释。我认为Visual Block可以用来做那个:

  1. 选中标签“block two”中的所有行;
  2. 将缓冲区粘贴到标签“block three”的开头;
  3. 选中“阻止一个”标签中的所有行;
  4. 将缓冲区粘贴到标签“block three”的开头。
  5. 但是,我尝试了Visual Block Mode中的提示(前两个y和p示例),我无法得到预期的结果。粘贴不会将缓冲区字符串连接到块。不知道我做错了什么。或任何其他替代方式?

2 个答案:

答案 0 :(得分:2)

我最近遇到了VimCasts一集,描述了如何在视觉模式下进行编辑。看看视频,我相信他描述了你想要的东西。

答案 1 :(得分:2)

您是否尝试过Visual-blockwise(ctrl-v)?它们必须是相同的宽度线,但它可以工作。

# Yank the lines from the other file
gg V G 
# Add whitespace to the end
:%s/$/  /
# Select the whitespace at the end of the other file, and paste it
gg $ ctrl-v $ p

你可能需要做一些改变,但希望它至少给你一些想法。