2010-05-27 61 views
7

背景:Vim分步说明:如何通过任意分隔符排列任意文本?

有很多伟大的教程和“技巧”的Vim的网页,但有一两件事,这是非常难的是找到如何做一些随心所欲的事具体说明,人们可以很容易地在自己熟悉的文本编辑器IDE中做。因此,我要求一步一步地指导你如何在Vim中完成某些我已经知道如何在其他文本编辑器中执行的操作。我喜欢Vim和很棒的内置帮助以及众多的在线教程,但有时候人们不得不分手并要求另一个人。

问:

假设我在我的文件下面的代码,我怎么可以用Vim从之前得到,到后?

 
    BEFORE: 
    Lorem ipsum dolor | sit amet, consectetur | adipisicing elit, 
    sed do eiusmod | tempor incididunt | ut 
    labore et | dolore magna aliqua. | Ut enim ad minim veniam, 
    quis nostrud | exercitation ullamco | laboris 
    nisi ut | aliquip ex ea commodo | consequat. Duis aute irure 

    AFTER: 
    Lorem ipsum dolor | sit amet, consectetur | adipisicing elit,   
    sed do eiusmod  | tempor incididunt  | ut       
    labore et   | dolore magna aliqua. | Ut enim ad minim veniam, 
    quis nostrud  | exercitation ullamco | laboris     
    nisi ut   | aliquip ex ea commodo | consequat. Duis aute irure 

注:

  • 这将是很好基于任意分隔符,而不仅仅是管 字符做到这一点。

  • 如果你还没有找到一种方法来做到这一点,但你知道一个插件,可以帮助的,但喜好去谁的人有他们以前

+2

我没有使用它,但你要找的是[align.vim](http://www.vim.org/scripts/script.php?script_id=294)插件。 – 2010-05-27 18:22:52

回答

13

如果使用Align插件,你可以简单地说:

  1. 视觉上V
  2. 类型:Align |

|任何分隔符选择文本

OR

  1. 目视选择具有V
  2. 类型\t|

文本对于预设|快捷方式。

3

使用一个有效的解决方案这不是什么灵丹妙药,如果你这样做了很多,我希望你能找到/制作一个插件,但是这些步骤可以工作,不需要特别安装,并且无论如何都是很好的学习,因为它们推广整个任务范围。

  1. :set noet确保您不将标签扩展到空格。
  2. :set ts=25设置一个不错的大标签页大小。
  3. :%s/\w*|\w*/\t|\t/g在管道周围添加一个单独的制表符而不是任意间隔。
  4. :set et使标签转换回空格当我们
  5. :retab来转换它们。
  6. 在这一点上,事情很好地排队,但可能会有太多的间距。所以使用可视块模式(Ctrl + v)来整理一些东西。

我经常使用这样的组合来处理各种文本处理任务。视觉块模式非常有用,我还没有看到很多其他编辑有可比性。另请参阅:help blockwise-examples

2

Damian Conway在IBM Developer Works有一系列关于Vim的文章。这一个:

http://www.ibm.com/developerworks/linux/library/l-vim-script-2/index.html

展示了如何创建一个函数来排队赋值运算符。它在这一部分有助于你编码的功能。我想你可以把它推广到你的需求。或者使用Align插件。我有时会在编写自己的工具,从中学习某些东西,并获得别人的工具,这通常比我更好,让我更快恢复工作。

顺便说一句,整个系列是优秀,,还有更多。最后一篇文章的最后一段说:

因此,在本系列的下一篇文章中,我们将探索Vim的简单插件架构,它允许您将.vimrc的一部分分离出来,并将它们分隔开模块。我们将通过开发一个独立的模块来解决这个插件系统的工作原理,这个模块可以改善使用XML的一些恐怖事件。