57

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

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

4

6 回答 6

51

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

于 2013-02-21T01:27:11.667 回答
51

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

:echo line(".") + 1

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

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

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

:noremap <F1> :execute "normal! i" . ( line(".") + 1 )<cr>
于 2013-02-21T01:31:00.273 回答
7

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

你有<C-r>这种事情的插入模式:

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

于 2013-02-23T22:07:59.157 回答
7

1. 使用:set ruler。(仅适用于vim参考

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

1,1 <position>

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

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

2. 使用:set number。(适用于vivim参考

在每行之前显示行号。

于 2018-12-04T15:37:17.450 回答
2

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

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

于 2013-02-21T07:50:29.270 回答
0

与原始问题无关,但对我来说,看到我喜欢使用的行号:#,它也会打印出行号和内容

于 2021-01-10T02:23:40.140 回答