[shlug]emacs中如何快速处理一列文本?

29 views
Skip to first unread message

Giant Y

unread,
Oct 20, 2014, 9:30:56 AM10/20/14
to shlug
大家好,标题可能表达得不是很直白,我来具体说一下。

需求一,在text mode里面输入下面的文本,列与列之间用tab空开。

#-----------------------------------------------------
#pinnr seq type style posit. net label
#-----------------------------------------------------
1 io line r PD3 (PCINT19/OC2B/INT1)
2 io line r PD4 (PCINT20/XCK/T0)
3 pwr line l GND GND
4 pwr line l VCC VCC
5 pwr line l GND GND
6 pwr line l VCC VCC
7 io line r PB6 (PCINT6/XTAL1/TOSC1)
8 io line r PB7 (PCINT7/XTAL2/TOSC2)
9 io line r PD5 (PCINT21/OC0B/T1)
10 io line r PD6 (PCINT22/OC0A/AIN0)
11 io line r PD7 (PCINT23/AIN1)
12 io line r PB0 (PCINT0/CLKO/ICP1)
13 io line r PB1 (PCINT1/OC1A)
14 io line r PB2 (PCINT2/\_SS\_/OC1B)
15 io line r PB3 (PCINT3/OC2A/MOSI)
16 io line r PB4 (PCINT4/MISO)
17 io line r PB5 (SCK/PCINT5)
18 pwr line l AVCC AVCC
19 in line r ADC6
20 pwr line l AREF AREF
21 pwr line l GND GND
22 in line r ADC7
23 io line r PC0 (ADC0/PCINT8)
24 io line r PC1 (ADC1/PCINT9)
25 io line r PC2 (ADC2/PCINT10)
26 io line r PC3 (ADC3/PCINT11)
27 io line r PC4 (ADC4/SDA/PCINT12)
28 io line r PC5 (ADC5/SCL/PCINT13)
29 io line r PC6 (\_RESET\_/PCINT14)
30 io line r PD0 (RXD/PCINT16)
31 io line r PD1 (TXD/PCINT17)
32 io line r PD2 (INT0/PCINT18)

pinnr这一列是编号,从1开始递增,我现在是一个一个手动输入的,有什么方法可
以省力点?

还有像style这一列,全部是line,我也是一个一个粘贴上去,有什么办法可以省
力一点?

需求二:和需求一差不多,但环境改成org-mode的表格,效果请看下面

** 移位操作指令
实现逻辑左移、右移、算术右移等运算
| NO. | name | description | example |
|-----+------+-------------+---------|
| 1   | sll  |             |         |
| 2   | sllv |             |         |
| 3   | sra  |             |         |
| 4   | srav |             |         |
| 5   | srl  |             |         |
| 6   | srlv |             |         |

请问,如何可以又快又省力的在NO.这一列里填上依次递增的数字?


-> posted by  Giant Y

孑影

unread,
Oct 20, 2014, 10:04:32 AM10/20/14
to sh...@googlegroups.com
www.cnblogs.com/qlwy/archive/2012/06/15/2551034.html

好像org-mode 可以用简单的公式,mark一下,等emacs 大神出手

#风起看云涌,叶落品人生#

--
-- You received this message because you are subscribed to the Google Groups Shanghai Linux User Group group. To post to this group, send email to sh...@googlegroups.com. To unsubscribe from this group, send email to shlug+un...@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/shlug?hl=zh-CN
---
您收到此邮件是因为您订阅了Google网上论坛中的“Shanghai Linux User Group”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到shlug+un...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

孑影

unread,
Oct 20, 2014, 10:45:06 AM10/20/14
to sh...@googlegroups.com
| NO. | name | description | example |
|-----+------+-------------+---------|
| 1   | sll  |             |         |
| 2   | sllv |             |         |
| 3   | sra  |             |         |
| 4   | srav |             |         |
| 5   | srl  |             |         |
| 6   | srlv |             |         |
#+TBLFM:$1=@#-1




#风起看云涌,叶落品人生#

孑影

unread,
Oct 20, 2014, 10:51:13 AM10/20/14
to sh...@googlegroups.com
#+TBLFM:$1=@#-1::$3=line

#风起看云涌,叶落品人生#

Han Lei

unread,
Oct 20, 2014, 11:39:43 AM10/20/14
to sh...@googlegroups.com
32pin的MCU,带6bit的ADC,I2c,SPI,UART
--
                           //////////\\\\
                           ( ~~ ~~ )
                          (   @ @   )
                            (    o    )
 -------------oOOo-----------oOOo--------------
Mit freundlichen Grüßen
Man proposes, God disposes .

Greetings from Oliver Twist
                                      0ooo
 ---------------------oooO---(   )------------------
                        (   )           )  /
                         \  (          (_/
                          \_)

Giant Y

unread,
Oct 21, 2014, 5:54:07 AM10/21/14
to shlug

2014-10-20 22:45 GMT+08:00 孑影 <yhsp...@gmail.com>:
#+TBLFM:$1=@#-1

​这个在org mode下可行。但是在text mode下不能用,需要切换到org mode,可是org mode下的表格形式多了那些框线,不是我需要的效果,有办法去除吗?​

孑影

unread,
Oct 21, 2014, 7:55:44 AM10/21/14
to sh...@googlegroups.com
text 下面做,估计只有你自己写lisp 代码弄了吧,一般都是org mode 下面弄表格的事情。


#风起看云涌,叶落品人生#

--

zodiac lee

unread,
Oct 21, 2014, 8:18:39 AM10/21/14
to sh...@googlegroups.com
貌似是这个呢 Figure 1-1. Pinout ATmega48A/PA/88A/PA/168A/PA/328/P(32 TQFP/MLF Top View).刚周末在玩Arduino呢~

Yu Changyuan

unread,
Oct 21, 2014, 12:35:36 PM10/21/14
to shlug
关于需求1,可以用宏来完成的,无论是插入序号还是line。

1. 插入序号。

首先将0存入寄存器a
C-u 0 C-x r n a

然后录制宏(分别是在当前位置插入寄存器a的值、下一行、光标移到行首、将寄存器a的值加一)
F3
C-x r i a
C-n
C-a
C-u 1 C-x r + a
F4

将光标移到第一行待填入1的位置,然后猛按F4即可

2. 插入line

通用使用宏,录制比较简单
F3
line
C-n
C-b
F4

然后在待第一行要插入line的位置开始猛按F4即可


要注意的是,上面两个方法已经假定表格已经排版好了的(字段间有且仅有一个tab了,然后需要序号是在行首等)


对于需求2,因为对org模式不熟,所以就献丑了。
Best regards,
Changyuan

Yu Changyuan

unread,
Oct 21, 2014, 12:56:10 PM10/21/14
to shlug
对于插入序号,除了用宏,还可以直接用lisp代码,这个对我来说可能还更简单些(录制复杂的宏的过程容易出错)。

1. 先在文本文件中插入如下一段代码:

(progn
  (goto-char (get-register ?a))
  (dotimes (i 32)
    (insert (number-to-string (+ i 1)))
    (next-line)
    (beginning-of-line)))

2. 然后将光标移到表格第一行待插入序号的位置,将该位置保存到寄存器a中(下面的SPC是空格)
C-x r SPC a

3. 最后将模式改为lisp-interaction-mode(M-x lisp-interaction-mode),
然后将光标移到上面那段代码的最后面,通过C-x C-e执行即可。

2014-10-22 0:35 GMT+08:00 Yu Changyuan <rei...@gmail.com>:
关于需求1,可以用宏来完成的,无论是插入序号还是line。

1. 插入序号。

首先将0存入寄存器a
C-u 0 C-x r n a

然后录制宏(分别是在当前位置插入寄存器a的值、下一行、光标移到行首、将寄存器a的值加一)
F3
C-x r i a
C-n
C-a
C-u 1 C-x r + a
F4

将光标移到第一行待填入1的位置,然后猛按F4即可

2. 插入line

通用使用宏,录制比较简单
F3
line
C-n
C-b
F4

然后在待第一行要插入line的位置开始猛按F4即可


要注意的是,上面两个方法已经假定表格已经排版好了的(字段间有且仅有一个tab了,然后需要序号是在行首等)


对于需求2,因为对org模式不熟,所以就献丑了。
抱歉,这里是笔误 ,应该是“不献丑了”。



--
Best regards,
Changyuan

Giant Y

unread,
Oct 22, 2014, 5:57:20 AM10/22/14
to shlug
​感谢楼上大神。​


-> posted by  Giant Y

Giant Y

unread,
Oct 22, 2014, 5:58:46 AM10/22/14
to shlug
2014-10-21 20:18 GMT+08:00 zodiac lee <zodia...@gmail.com>:
貌似是这个呢 Figure 1-1. Pinout ATmega48A/PA/88A/PA/168A/PA/328/P(32 TQFP/MLF Top View).刚周末在玩Arduino呢~

​被你猜中了。是ATmega328P。​

Ashi

unread,
Oct 24, 2014, 6:51:44 AM10/24/14
to SHLUG
emacs 有Rectangle相关的命令可以满足你的需求:
1. rectangle-number-lines: 插入行号
2. string-rectangle: 插入一列你输入的字符
Reply all
Reply to author
Forward
0 new messages