在我的一些编程中,最近,我经常不得不手动输入长std::vector
的值。所以对于大小为30的向量,我必须继续输入
myvec[0]=1.0;
myvec[1]=4.6;
myvec[2]=6.7;
myvec[3]=7.8;
.
.
myvec[29]=87;
我使用Emacs作为文本编辑器。是否有可能在Emacs中以某种方式指定从第30行到第59行插入行
myvec[0]= ;
myvec[1]= ;
myvec[2]= ;
.
.
myvec[29]= ;
当然,必须手动输入向量的各个值,但它会一次又一次地为我节省大量的输入或复制/粘贴myvec[]
。
答案 0 :(得分:6)
Keyboard Macros是 更简单的方法。
CX ( myvec[
CX CK 次 {{ 1}} RET CX )
然后 M-3 M-9 C-X 电子
]
= ;
并用于发送39
参数因此两者的组合执行宏观39次。
您还可以查看the manual,了解save他们和edit他们的身份。
答案 1 :(得分:4)
尝试此序列(Emacs高尔夫得分= 17):
< F3> 米 ý v 电子 Ç [ < F3> ] SPC = SPC ; CJ M-3 0 < F4>
答案 2 :(得分:2)
您可以使用键盘宏执行此操作,但是如果您经常需要这样做,那么您最好使用可以使用Mx调用的函数,并要求插入字符串,序列的起始编号和结束号:
(defun my-insert-numbered-template (string start end)
(interactive "sString (use %%s as a placeholder for the number) : \nnSequence start: \nnSequence end: ")
(while (<= start end)
(insert (format string start) "\n")
(incf start)))
答案 3 :(得分:2)
C-x (开始录制键盘宏。
然后输入myvec[
F3 ] ;
和 RET 然后 Cx )完成定义你的宏。
现在,你可以简单地说 C-u 29
和 C-x e 。它会运行宏29次,并且你点击 F3 的位置将被宏计数器填入,给你增量。
这听起来比写汤姆建议的功能更复杂,但我建议你尝试掌握键盘宏。一旦你对它们感到满意,它们可以削减的工作量确实令人难以置信。
答案 4 :(得分:1)
另一种方法是使用正则表达式搜索和替换。
首先,输入myVec[]=;<ret>
。
接下来,复制整个区域,包括换行符。然后根据需要将其粘贴多次。现在你有一堆myVec[]=;
行。
现在选择myVec
的整个区域并执行M-x replace-regexp
]
\#]
,这将为您编号。
这是Emacs真正的神奇之处 - 你有很多强大的工具,这意味着总有不止一种方法可以做到。