使用Vim 6.0.假设我正在编辑此文件:
sdfsdg
dfgdfg
34 12
2 4
45 1
34 5
Run Code Online (Sandbox Code Playgroud)
如何对第二列进行排序?
P S*_*ved 49
如果您有可用的shell,请选择您的号码并运行命令
:'<,'>!sort -n -k 2
Run Code Online (Sandbox Code Playgroud)
如果您要在可视模式下键入此内容,则在键入冒号后,标记'<,'>将自动显示,您只需键入其余部分即可.
这种命令(:[motion]!)称为过滤.您可以通过咨询vim的帮助了解更多信息:
:h filter
Run Code Online (Sandbox Code Playgroud)
msc*_*t42 36
使用Vim 命令对第二列N上的所有行进行排序sort,例如
:sort /.*\%2v/
Run Code Online (Sandbox Code Playgroud)
参考: vimtips.txt
Max*_*Kim 19
对于vim7,我会选择:
:sort n /.*\s/
Run Code Online (Sandbox Code Playgroud)
这将对数字进行排序,忽略给定正则表达式匹配的文本.在你的情况下,它是第二列.
T.T*_*dua 19
通过在可视模式下选择它来排序第二列(例如Control+ v),然后运行:
!sort
Run Code Online (Sandbox Code Playgroud)
或按第三栏排序
sort -k 3
Run Code Online (Sandbox Code Playgroud)
要么
:sort /.*\%3v/
Run Code Online (Sandbox Code Playgroud)
或者,使用Shift+ V命令选择要排序的行.然后输入
!sort -k 3n
Run Code Online (Sandbox Code Playgroud)
或者使用下面的代码告诉Vim跳过每一行中的前两个单词,并对以下内容进行排序:
:%sort /^\S\+\s\+\S\+\s\+/
Run Code Online (Sandbox Code Playgroud)
或者按第8行排序:
:sort /.*\%55v/
Run Code Online (Sandbox Code Playgroud)
"虚拟"规范是列的绝对数量,它将空格+制表符视为单个字符(很快,它不会将制表符视为八个空格),
所以按最后一列排序:
:%sort /\<\S\+\>$/ r
Run Code Online (Sandbox Code Playgroud)