首页 文章

Vim循序渐进:如何通过任意分隔符排列任意文本?

提问于
浏览
7

Background:

Vim有很多很棒的教程和"tricks"页面,但有一点非常困难,就是找到一些关于如何在一个人熟悉的文本编辑器IDE中轻松完成任意事情的具体说明 . 因此,我要求一步一步说明如何在Vim中做一些我已经知道如何在其他文本编辑器中做的事情 . 我喜欢Vim以及强大的内置帮助和大量的在线教程,但有时人类不得不打破并要求另一个人 .

Question:

假设我的文件中有以下代码,如何使用Vim从BEFORE到AFTER?

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

Notes:

  • 基于任意分隔符而不仅仅是管道符号来做这件事会很好 .

  • 如果你还没有办法做到这一点,但是你知道一个插件,那会有所帮助,但是偏爱的是那些拥有以前用过的工作解决方案的人

3 回答

  • 13

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

    • 使用 V 目测选择文本

    • 类型 :Align |

    | 是任何分隔符

    要么

    • 使用 V 目测选择文本

    • 类型 \t|

    对于预设的 | 快捷方式 .

  • 3

    这不是一个神奇的子弹,如果你这么做很多,我希望你能找到/制作一个插件,但这些步骤确实有效,不需要任何特殊安装,并且无论如何都很好学习,因为它们可以推广整个任务范围 .

    • :set noet 以确保您不会将标签扩展到空格 .

    • :set ts=25 设置一个漂亮的大标签停止大小 .

    • :%s/\w*|\w*/\t|\t/g 在管道周围添加单个制表位而不是任意间距 .

    • :set et 使标签在我们转换回空格时

    • :retab 转换它们 .

    • 此时,事情很顺利,但可能会有过多的间距 . 因此,使用visual-block模式(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

    展示了如何创建一个函数来排列赋值运算符 . 它位于名为A函数的部分中,可帮助您进行编码 . 我想你可以根据自己的需要进行推广 . 或者使用Align插件 . 我的工具,通常比我的好,让我能更快地恢复工作 .

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

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

相关问题