我知道我可以使用 Awk,但我使用的是 Windows 机器,并且我正在为可能没有 Awk 的其他人创建一个函数。我也知道我可以编写 C 程序,但我不希望我正在制作的 Vim 实用程序需要编译和维护。
原始文件可能是:
THE DAY WAS LONG
THE WAY WAS FAST
转置后应变为:
TT
HH
EE
DW
AA
YY
WW
AA
SS
LF
OA
NS
GT
Update
- 高尔夫规则适用于选择正确答案。
- Python 爱好者应该看看查尔斯·达菲 (Charles Duffy) 的回答如下 https://stackoverflow.com/a/704139/254635.
这是 Vim 语言的命令。所以你不必编译带有 +python 支持的 Vim。
function! s:transpose()
let maxcol = 0
let lines = getline(1, line('$'))
for line in lines
let len = len(line)
if len > maxcol
let maxcol = len
endif
endfor
let newlines = []
for col in range(0, maxcol - 1)
let newline = ''
for line in lines
let line_with_extra_spaces = printf('%-'.maxcol.'s', line)
let newline .= line_with_extra_spaces[col]
endfor
call add(newlines, newline)
endfor
1,$"_d
call setline(1, newlines)
endfunction
command! TransposeBuffer call s:transpose()
将其放入 vim/plugin 目录中新创建的 .vim 文件中,或将其放入您的 [._]vimrc 中。
执行:TransposeBuffer
转置当前缓冲区
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)