代码之家  ›  专栏  ›  技术社区  ›  KcFnMi

将文本左对齐

  •  0
  • KcFnMi  · 技术社区  · 6 年前

    给出如下信息:

    dadscasd
      cas
        casdc 
    

    在维姆,我怎样才能把所有的线路都放在左边?

    dadscasd
    cas
    casdc 
    

    我安装了 vim tabular . 我知道如何对齐一个模式,但不知道如何将所有内容左对齐。此外,不确定VIM表格是否适合该工作。

    3 回复  |  直到 6 年前
        1
  •  0
  •   Stun Brick    6 年前

    无需任何插件即可轻松完成此操作
    在正常模式下,按:

    ggVG<<
    

    然后按 . 尽可能多次。

    命令的解释

    • gg :跳到文件顶部
    • V :开始一次抓取整行的可视选择
    • G :转到文件结尾(在本例中,从开始到结束选择所有内容)
    • << :将所选文本左移一个缩进
    • . :重复上一个命令(在本例中,是说我们应该将文件中的所有内容向左缩进的命令)

    如果不想全部移动行,只需选择要移动的行,使用 v V . 然后按 << >> 开始缩进。再一次, . 将重复上次发出的命令,使您的生活更轻松。

    要了解更多信息,打开vim,不输入任何其他内容,输入 :h << 然后按回车键。

    在没有视觉确认的情况下,一种更快的方法是输入

    :%left
    

    哪里 % 在这种情况下,表示当前缓冲区的整个范围,因为它是 1, $ .
    看见 :h left :h range

        2
  •  5
  •   B.G.    6 年前

    首先看一下 :h shift-left-right 这解释了很多。

    你的用例 :h left 会更好。我会这样做:

    目视选择所有3行( c-v 然后输入 :left ) 或者如果希望整个文件左对齐: :%left

    更多的选择你可以看 :h formatting

        3
  •  0
  •   jjisnow    6 年前

    另一个解决方案,如果你想练习你的regex用法

    :%s/\v^[ ]+//c
    

    这意味着:

    :%  an ed command, apply to entire file 
    s    I think this means 'sed' = 'stream edit' = find and replace
    /    Use this as the separator for the next 3 fields (the find, the replace, and the sed commands)
    \v  Means use "very magic mode" of vim ie characters not 0-9A-Za-z have special meanings and need escaping
    ^    The start of the line
    [ ]   A space character (or whatever characters are present between the [ ]. I believe you could use \s instead to represent any space including tabs
    +    Means find 1 or more, but select as many as possible (greedy)
    //    ie replace with the 'nothing' between the separators here
    c     Means confirm each replacement. You could omit this to do it automatically.