【问题标题】:Getting the current row number?获取当前行号?
【发布时间】:2013-02-06 05:32:49
【问题描述】:

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

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

【问题讨论】:

  • 输出的意思是“我的文档的文本”
  • 您是要显示结果,还是要将该结果写入缓冲区?

标签: vi vim


【解决方案1】:

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

【讨论】:

  • ctrl+G 对我来说只显示总行数和我所在文档的 /percentage/ ......疯了。 vim 7.1
【解决方案2】:

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

:echo line(".") + 1

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

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

实际将数据插入缓冲区:

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

【讨论】:

  • 你不能在这里使用:map。没有nore no *map commands should be used at all,但另外:map 定义了比您希望看到的更多模式的映射:您不需要这些映射在视觉(它们根本不会在这里工作)和操作员待定模式.同样使用:normal 很奇怪,你有&lt;C-r&gt; 在插入模式下处理这种事情:nnoremap &lt;F1&gt; i&lt;C-r&gt;=line('.')+1&lt;CR&gt;&lt;Esc&gt;
  • 谢谢 nnoremap i=line('.')+1 是我一直在寻找的答案
【解决方案3】:

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

你有 &lt;C-r&gt; 在插入模式下处理这种事情:

nnoremap &lt;F1&gt; i&lt;C-r&gt;=line('.')+1&lt;CR&gt;&lt;Esc&gt;

【讨论】:

    【解决方案4】:

    1。使用:set ruler。 (仅适用于vimReference

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

    1,1 &lt;position&gt;

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

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

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

    在每行之前显示行号。

    【讨论】:

      【解决方案5】:

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

      请注意,当行包含双角字符、&lt;Tab&gt; 或不可打印字符时,宽度与字符数不同。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2012-09-06
          • 2012-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-04
          • 2021-04-21
          • 1970-01-01
          • 2011-03-31
          相关资源
          最近更新 更多