[英]Allign the words to the specified column in vim using commands
如何將整個文件中的單詞移動或移動到指定的列? 例如如下:之前:
123 ABC
112 XYZS
15925 asdf
1111 25asd
1 qwer
之后:
123 ABC
112 XYZS
15925 asdf
1111 25asd
1 qwer
如何使用命令模式完成? 這里我們需要將第二個單詞移到指定的列這里指定的列是8
首先:substitute
用Tab字符:substitute
空格,然后:retab
到第8列的制表位,擴展到空格(對於給定的示例):
:.,.+4substitute/\s\+/\t/ | set tabstop=7 expandtab | '[,']retab
(我忽略了重置修改后的選項,這對你來說很重要。)
我的AlignFromCursor插件具有將光標右側的文本與特定列對齊的命令。 將它與:global
命令結合使用,該命令為范圍內的所有行調用此函數,並將W
動作轉換為每個行中的第二個單詞,您將獲得:
.,.+4global/^/exe 'normal! W' | LeftAlignFromCursor 8
除了其他人提到的vim-plugins,如果你正在使用可用column
命令的linux盒子上工作,你可以:
%!column -t
%
可以是vim范圍,例如視覺選擇等。
我為這個問題做了兩個函數。 我在這里發布了它: https : //github.com/imbichie/vim-vimrc-/blob/master/MCCB_MCCE.vim
我們需要在vim編輯器中調用此函數,並給出要移動的字符或空格的出現次數以及''
和列號內的字符。
出現的次數可以從每一行的起點( MCCB功能)開始,也可以在每一行的末尾( MCCE功能)。
對於問題中提到的上述示例,我們可以使用MCCB函數和我們可以使用空格的字符,因此在vim編輯器中的用法將是這樣的。
:1,5call MCCB(1,'',8)
因此,這將從第1行到第5行將第一個空格( '' )移動到第8列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.