获取当前行号?

问题描述 投票:45回答:5

是否有任何键映射输出正在编辑的行的当前行号?或者,更好的是,我们可以根据键映射的输出来做公式吗?

我想获取行号并将1添加到当前正在编辑的文本中。

vi vim
5个回答
43
投票

Ctrl + G将告诉您行号,甚至是光标所在的列。如果您的意思是将其作为文本输出到您的文档,那么我不知道。


36
投票

“输出”是什么意思?你可以做:

:echo line(".") + 1

要显示当前行号加1.您可以使用map绑定击键,例如:

:noremap <F1> :echo line(".") + 1<cr>

要将数据实际插入缓冲区:

:noremap <F1> :execute "normal! i" . ( line(".") + 1 )<cr>

4
投票

答案是由@ZyX在对另一个答案的评论中给出的:

你有插入模式的<C-r>这种东西:

nnoremap <F1> i<C-r>=line('.')+1<CR><Esc>


1
投票

您可以使用virtcol('.')获取当前光标位置的可视宽度;通过表达式寄存器将其插​​入缓冲区,例如在插入模式下使用<C-R>=virtcol('.')<CR>

请注意,当行包含双宽字符,<Tab>或不可打印的字符时,宽度与字符数不同。


0
投票

1.使用:set ruler。 (仅在vim工作)Reference

它显示了正在编辑的行的当前行和列(光标所在的行),位于寡妇的右下角。

1,1 <position>

  1. 如果编辑第一行,则位置为Top
  2. 如果编辑了最后一行,则位置为Bot
  3. 如果没有可用的滚动(开始和结束行都可见),则位置为All
  4. 如果没有可见的第一行和最后一行,则position是文档可见的百分比。

要使其永久化,请在set ruler文件中添加~/.vimrc(如果文件不存在,请创建一个)。

2.使用:set number。 (适用于vivimReference

显示每行之前的行号。

© www.soinside.com 2019 - 2024. All rights reserved.