如何用vim显示数字列的列数
How to display the column number of columns of numbers with vim
我有一个文件,其中只有用空格分隔的数字列。像这样:
0.0000000000 21.8066943617 0.0000000000
21.9391475974 0.0000000000 22.5951998271
0.0000000000 22.7253887380 0.0000000000
如何在Vim中显示光标的当前列号。不是每个字符的列,而是数字列的列数。
这是一种方法:抓取当前行的文本,直到光标位置,然后执行文本操作以将每个文本列压缩为单个字符,然后对字符进行计数。
:let textBeforeCursor = strpart(getline('.'), 0, col('.') - 1)
:let reduceColumnToSingleChar = substitute(textBeforeCursor, '\s*\S*', 'x', 'g')
:echo len(reduceColumnToSingleChar)
如果你把它放到一个:function
中,它可以很容易地被映射调用。
如果您将 :echo
更改为 :return
,您甚至可以将其包含在您的 'statusline'
中(通过 set statusline+=\ %{ColumnCount()}
),以便它在您移动时更新缓冲区。
我有一个文件,其中只有用空格分隔的数字列。像这样:
0.0000000000 21.8066943617 0.0000000000
21.9391475974 0.0000000000 22.5951998271
0.0000000000 22.7253887380 0.0000000000
如何在Vim中显示光标的当前列号。不是每个字符的列,而是数字列的列数。
这是一种方法:抓取当前行的文本,直到光标位置,然后执行文本操作以将每个文本列压缩为单个字符,然后对字符进行计数。
:let textBeforeCursor = strpart(getline('.'), 0, col('.') - 1)
:let reduceColumnToSingleChar = substitute(textBeforeCursor, '\s*\S*', 'x', 'g')
:echo len(reduceColumnToSingleChar)
如果你把它放到一个:function
中,它可以很容易地被映射调用。
如果您将 :echo
更改为 :return
,您甚至可以将其包含在您的 'statusline'
中(通过 set statusline+=\ %{ColumnCount()}
),以便它在您移动时更新缓冲区。