如何告诉emacs将某个表达式从x行插入y行
在我的一些编程中,我经常不得不手动输入长std::vector的值。所以对于大小为30的向量,我必须继续输入如何告诉emacs将某个表达式从x行插入y行,emacs,Emacs,在我的一些编程中,我经常不得不手动输入长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]=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[]的大量时间 您可以使用键盘宏执行此操作,但如果您经常需要,则最好使用一个函数,该函数可以使用M-x调用,并要求插入字符串、序列的起始编号和结束编号:
(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)))
可以使用键盘宏执行此操作,但如果经常需要,则最好使用一个函数,该函数可以使用M-x调用,并要求插入字符串、序列的起始编号和结束编号:
(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)))
是
更简单的方法
C-xmyvec[C-xC-kC-i]
= ;RETC-x
C-x启动宏定义
C-xC-kC-i
插入并递增计数器
C-x结束宏
释义
然后
M-3M-9C-xe
M-3M-9是一条捷径
C-u39,用于将39作为
论点
C-xe执行最后一个宏
记录
因此,两者的组合执行宏39次
你也可以看看你是如何处理它们的。是
更简单的方法
C-xmyvec[C-xC-kC-i]
= ;RETC-x
C-x启动宏定义
C-xC-kC-i
插入并递增计数器
C-x结束宏
释义
然后
M-3M-9C-xe
M-3M-9是一条捷径
C-u39,用于将39作为
论点
C-xe执行最后一个宏
记录
因此,两者的组合执行宏39次
您还可以查看如何录制它们和它们。C-x开始录制键盘宏。
然后输入myvec[F3];然后RET和C-x完成宏的定义
现在,你可以简单地说C-u29和C-xe。它将运行宏29次,您点击F3的位置将被宏计数器填充,从而为您提供增量
这听起来比Tom建议的编写函数更复杂,但我建议您尝试掌握键盘宏。一旦你适应了他们,他们可以减少的工作量真是难以置信 C-x开始录制键盘宏。
然后输入myvec[F3];然后RET和C-x完成宏的定义
现在,你可以简单地说C-u29和C-xe。它将运行宏29次,您点击F3的位置将被宏计数器填充,从而为您提供增量
这听起来比Tom建议的编写函数更复杂,但我建议您尝试掌握键盘宏。一旦你适应了他们,他们可以减少的工作量真是难以置信 尝试以下顺序Emacs golf score=17:
myvec[]SPC=SPC;C-jM-30尝试以下顺序Emacs高尔夫得分=17:
myvec[]SPC=SPC;C-jM-30另一种方法是使用regex搜索和替换 首先,键入myVec[]= 接下来,复制整个区域,包括换行符。然后根据需要多次粘贴。现在你有了一堆myVec[]=;台词 现在选择myVecs的整个区域,并执行M-x replace regexp]\],这将为您进行编号
这是Emacs真正的魔力——你有一大堆强大的工具,这意味着永远有不止一种方法可以做到这一点。另一种方法是使用regex搜索和替换 首先,键入myVec[]= 接下来,复制整个区域,包括换行符。然后根据需要多次粘贴。现在你有了一堆myVec[]=;台词 现在选择myVecs的整个区域,并执行M-x replace regexp]\],这将为您进行编号
这是Emacs真正的魔力——你有一大堆强大的工具,这意味着永远有不止一种方法可以做到这一点。有趣:扮演双重角色。有趣:扮演双重角色。很好,我不知道这个功能。如果能以某种方式指定序列起始号会更好,尽管我知道这是不可能的,因为这不是该功能的预期用途。很好,我不知道这个功能。如果可以以某种方式指定序列起始号,那就更好了,尽管我知道这是不可能的,因为这不是该功能的预期用途。顺便说一句,如果文件中有这些值,则不需要手动输入它们。您可以将它们提取到一个列表中,然后添加周围的其余代码,或者使用键盘宏,您可以查找、复制和粘贴值作为宏定义的一部分。顺便说一句,如果文件中有这些值,您可能不需要手动输入它们。您可以将它们提取到列表中,然后 它们添加周围的其余代码,或者使用键盘宏,您可以在宏定义中查找、复制和粘贴值。