如何在vim的开头和结尾进行正确的对齐?

时间:2014-03-30 00:53:59

标签: vim

当我编写python代码时,需要连续的行进行正确的对齐。

1)在开始时正确对齐

从20行到24行,如何在第4列显示每个开头字符?

2)最后的正确对齐

从20行到23行,如何在第78列显示每个结束字符\(连续符号)?

让我让问题更具体。 初始状态是

pattern=[['CompanySurvey','http://f10.eastmoney.com/f10_v2/CompanySurvey.aspx?code=sz%s'],  \  
           ['ShareholderResearch','http://f10.eastmoney.com/f10_v2/ShareholderResearch.aspx?code=sz%s'],  \  
             ['BonusFinancing','http://f10.eastmoney.com/f10_v2/BonusFinancing.aspx?code=sz%s'],           \  
                 ['FinanceAnalysis','http://f10.eastmoney.com/f10_v2/FinanceAnalysis.aspx?code=sz%s'],     \  
         ['CapitalStockStructure','http://f10.eastmoney.com/f10_v2/CapitalStockStructure.aspx?code=sz%s']]  

我想左右对齐5行。

1.使用Ingo Karkat的方法

:2,5left9

它获得显示

pattern=[['CompanySurvey','http://f10.eastmoney.com/f10_v2/CompanySurvey.aspx?code=sz%s'],  \  
             ['ShareholderResearch','http://f10.eastmoney.com/f10_v2/ShareholderResearch.aspx?code=sz%s'],  \  
             ['BonusFinancing','http://f10.eastmoney.com/f10_v2/BonusFinancing.aspx?code=sz%s'],           \  
             ['FinanceAnalysis','http://f10.eastmoney.com/f10_v2/FinanceAnalysis.aspx?code=sz%s'],     \  
             ['CapitalStockStructure','http://f10.eastmoney.com/f10_v2/CapitalStockStructure.aspx?code=sz%s']]  

2.使用FDinoff的方法

:%s/.$/\=repeat(' ',107-len(getline('.'))).submatch(0)    

获得输出。

pattern=[['CompanySurvey','http://f10.eastmoney.com/f10_v2/CompanySurvey.aspx?code=sz%s'],                \
         ['ShareholderResearch','http://f10.eastmoney.com/f10_v2/ShareholderResearch.aspx?code=sz%s'],    \
         ['BonusFinancing','http://f10.eastmoney.com/f10_v2/BonusFinancing.aspx?code=sz%s'],              \
         ['FinanceAnalysis','http://f10.eastmoney.com/f10_v2/FinanceAnalysis.aspx?code=sz%s'],            \
         ['CapitalStockStructure','http://f10.eastmoney.com/f10_v2/CapitalStockStructure.aspx?code=sz%s'] ]

:%s/.$/\=repeat(' ',107-len(getline('.'))).submatch(0)要做到这一点已经很久了,有人可以简单吗?

2 个答案:

答案 0 :(得分:0)

我认为这就是你想要的。我不确定是否有更简单的方法。

通过添加正确数量的空格字符,将最后一个字符移动到第78列。

:%s/.$/\=repeat(' ',78-len(getline('.'))).submatch(0)

这会移动行,以便第4列中出现第一个非空白字符。其中空白字符数是列 - 1

:%s/\s*\(\S.*\)/\=repeat(' ',3).submatch(1)

答案 1 :(得分:0)

对于您的第一个用例,:20,24left 4就足够了。

看看我的AlignFromCursor plugin。它提供映射(和命令)以对齐(左或右)某个列。这将有助于通过\对齐78<Leader>ri行继续(光标放在其上或之前)。