【问题标题】:How to append a number sequence at the end of multiple lines with different length?如何在不同长度的多行末尾附加一个数字序列?
【发布时间】:2013-12-24 23:46:12
【问题描述】:

我正在重写一些脚本。我想附加到许多这样的行:

short=s[
verylongword=s[
P=s[

这些数字:

0
1
2

要得到这个:

short=s[0
verylongword=s[1
P=s[2

我已经尝试使用 VIM ctrl+v put 我不能将它们放在行尾...如果无法使用 vim,即使使用 emacs 也是最好的方法...

编辑: 现在我知道我可以用this method 做到这一点,如果我在我的示例中的列中有数字,所以问题是如何在不先编写序列的情况下更快地附加数字序列?

【问题讨论】:

  • @G M:你总是想从0开始增加数字吗?
  • GM:你能回答一下 TacticalCoder 的问题吗?您的问题的标题和您得到的答案之间存在脱节,因为您的示例使用了升序的数字序列。您想要任意行内容的答案,还是只想要数字序列的答案?
  • @phils 实际上我只是想添加多行,但是因为其他问题的答案很多,所以我已经更改了问题,您认为这样做是正确的吗?非常感谢!
  • 是的,在这种情况下,我认为这是一个很好的改变——它可以防止这个问题与另一个问题重复,而不会以任何方式使你的答案无效。

标签: vim emacs editor


【解决方案1】:

使用 vim 您可以使用以下搜索和替换语句

%s/$/\=line('.')-1

故障

%                    apply to entire buffer
s                    substitute
/$                   search for end of line
/\=line('.')-1       replace with linenumber - 1

【讨论】:

    【解决方案2】:

    你问过 vim 或 Emacs...

    在 Emacs 中,您可以简单地选择要修改的行然后执行:

    replace-regexp RET $ RET \# RET
    

    (在股票 Emacs 设置上,M-x replace-regexp...

    \# 是一个特殊的替换,它从 0 开始,每次替换时递增。它很棒,您当然可以将它与其他 elisp 替换混合使用。

    例如,如果您想从 100 开始为条目编号:

    replace-regexp RET $ RET \,(+ 100 \#) RET
    

    【讨论】:

    • 我只是想要一个解决我的问题的方法,我可以同时使用这两个编辑器,所以如果在 emacs 中更容易我可以使用它...
    【解决方案3】:

    在 Emacs 中,您还可以使用键盘宏来执行此操作。点在第一行的末尾(short=s[),定义如下:

    F3开始宏定义

    F3 插入宏计数器(默认从0开始)

    C-f 移动到下一行的开头

    C-e 移动到行尾

    F4结束宏定义

    执行宏

    • 手动重复按F4
    • 指定一个前缀参数,表示您希望重复宏的次数 (n):C-u n F4
    • 指定前缀参数0 为所有剩余的行重复宏:C-u n F4

    如果您希望编号从一个不为零的值开始,请通过发出 M-x kmacro-set-counter 来设置宏计数器值。此命令的默认键绑定是 C-x C-k C-c

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-21
      • 2018-02-25
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2011-07-15
      • 2021-12-16
      相关资源
      最近更新 更多