作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我知道我可以使用 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
最佳答案
这是一个 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
转置当前缓冲区
关于python - 如何在 Vim 中转置文件中行和列的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/704130/
我是一名优秀的程序员,十分优秀!