lstar's AnsiViewer [ 0.ans ]

ASCIIArt跨站讲座第一期 - 基础知识

1-13 15-17部分由日月光华站SuperSS编写， 14部分由TrueofLove编写。

1.ASCIIART简介
2.什么是ANSI转义序列
3.显示属性*[m的设置
4.签名档与说明档
5.超过6行的qmd
6.彩色id,彩色昵称
7.右方的垂直qmd
8.修改个人说明档上方的个人信息
9.隐藏ip
10.延时控制
11.其他的非标准ANSI转义序列
12.复制与粘贴
13.区块操作和剪贴簿操作
14.AsciiArt礼节
15.cterm的拷贝TCP包功能
16.telnet下编辑文章时的一些功能
17.相关软件
Power By:AnsiViewer 0.2(lstar@zixia)


lstar's AnsiViewer [ 1.ans ]

1. ASCIIART简介

ASCII是American Standard Code for Information Interchange的缩写,
也就是美国信息交换标准码，是美国国家标准局特别制定的，
最初的ASCII使用7个二进制位进行编码，共128个码位（0~127）。
这一编码很快就成为了世界性的标准
这128个码位中，第0～32号及第127号(共34个)是控制字符或通讯专用字符，
其中第32号是空格(Space)
第33～126号(共94个)是可见字符，包括了阿拉伯数字，英文字母，英文标点等
所有这94个字符都可以通过标准键盘直接输入
ASCIIART，就是利用ASCII编码定义的这些字符的组合来反映现实生活中的事物
或者表达自己思想的一门艺术
/)/)
(-.-) 真啰嗦，早点把我请出来不就好了？写了一大堆，下面人都睡着了！

/\/\
(-oo-) 是是是，我们长话短说
现在我们也不一定非要局限在只使用ASCII编码的字符，
比如可以用GB码甚至GBK码中的所有字符进行创作；(台湾用BIG5码)
字符多了，使得更多的事物、意境可以通过字符画来表现，
当然通用性比之标准ASCII要差
尽管字符集扩展了，不过仍旧称为ASCIIART


lstar's AnsiViewer [ 2.ans ]

2. 什么是ANSI转义序列

ANSI是American National Standards Institute的缩写
也就是美国国家标准协会

ANSI转义序列，可以看作是一系列函数，
用来改变显示模式，控制光标的移动甚至可以对键进行重定义等

在BBS上，只用得到其中的一部分，最常用的就是前背景色的设置了，
另外如光标控制、清屏等的控制码在一些特定场合用来制造一点特殊效果

另外，一些终端软件，如cterm，还自己定义了一些非标准的控制码

ANSI转义序列，都是以一个ASCII码27号字符开始，该字符在firebird系统下的输入
方式是连按两下ESC(水木的系统也是这样), 这时候一般会出现一个*号，不过它与直接
通过Shift+8输入的*号不同，这实际上是一个控制字符(ASCII码27号字符)，这里要赞一
下水木，控制符用了黄颜色的*，这样即使跟普通的*号同时出现也不会混淆了)。

ANSI转义序列是区分大小写的

cterm2000的文章编辑框里面，有一个插入按钮可以插入各种ANSI符号；在不用文章
编辑框时(比如修改原有代码时)，可以用Insert键插入控制符，当然连按两下ESC也是可
以的

比如编写文章时连按两下ESC(用cterm的注意不是在文章编辑框里面这么做)，看到
浅蓝"(不要输入那两个引号)，现在应该是"*[36m浅蓝"了，
按一下ESC再按一下C键，看到了浅蓝。字的颜色改变了。

ESC-C可以预览效果，大多数情况下看到的和发表出来的实际效果是一样的，
不过ESC-C只能看当前一屏(23行)内的效果


lstar's AnsiViewer [ 3.ans ]

3. 显示属性*[m的设置

显示属性是最常用的一个ANSI控制，可设置的项目包括
◆ 前景色(文本颜色)
◆ 背景色
◆ 高亮状态的设置
◆ 文本下划线
◆ 闪烁文本
◆ 反显

BBS上我们可以设置的颜色共有16种，其中8种低亮颜色，8种高亮颜色，

为了避免其他方面造成的影响，请大家先把终端软件的默认高亮等的设置关掉：
·cterm2000: 编辑>>系统设置>>高级，确认没选上总是高亮
·fterm : 选项>>参数设置，确认没有选上默认高亮
·sterm : 选项>>当前连接设置>>远程登录设置>>外观，确认没选上总是高亮

好，现在开始，先看一下下图：

设置显示属性 *[p1;p2;...;pnm
p1...pn是一些整数含义见下,m必须小写,*是两下ESC打出来的，不是键盘上的*

0-关闭各显示属性 30 31 32 33 34 35 36 37
1-高亮 颜色代码记忆法： 40 ss ss ss ss ss ss ss ss
4-下划线______ ↗ 41 ss ss ss ss ss ss ss ss
5-闪烁 ︳ 1=红 2=绿 4=蓝 42 ss ss ss ss ss ss ss ss
7-反显 ︳ 3=红+绿=黄 43 ss ss ss ss ss ss ss ss
︳ 5=红+蓝=紫 44 ss ss ss ss ss ss ss ss
30~37设置前景色 ＿︳ 6=绿+蓝=青 45 ss ss ss ss ss ss ss ss
40~47设置背景色 7=红+绿+蓝=白 46 ss ss ss ss ss ss ss ss
0就是黑色 47 ss ss ss ss ss ss ss ss
*[m与*[0m类似，都能关闭闪烁、下划线和反显，并恢复到默认前背景色
参数可连续设置: 如 *[0;1;5;32;46m 相当于 *[0m*[1m*[5m*[32m*[46m

30~37用来设置前景色，可以按上图记忆颜色，也可以直接背8种颜色对应：

*[30m黑色
*[31m红色
*[32m绿色
*[33m黄色
*[34m蓝色
*[35m紫色
*[36m青色
*[37m暗白

要得到相应的高亮颜色，用*[1m，
*[1m*[31m与*[1;31m是一样的，一般用后者使得代码更短
背景色用40~47来设置，背景色都是低亮的，因此只有8种
*[5m闪烁，要注意的是一般来说一屏上闪烁的部分不要太多太集中
*[4m是下划线，
在cterm里面下划线一律是白色的，
而fterm或sterm里面下划线的颜色与相应位置文字的颜色相同
*[7m反显建议不要使用，各种终端软件对其的解释差别较大
cterm中是交换前背景，高亮一律只作用在前景
fterm中忽略前背景色，用白底黑字
sterm中交换前背景，而且会把高亮作用到背景色上，
因此sterm中可能出现高亮背景低亮前景的情况
*[0m与*[m两者差不多，关闭闪烁下划线反显，并恢复到默认前背景色
在水木或者紫霞等站两者一样
sterm对两者的解释也一样
在其他BBS，用cterm或fterm的人，*[0m一律恢复到低亮，
*[m则根据你的设置，恢复到默认的高低亮状态

如果是在水木、紫霞等站点，或者用的是sterm，
当设成了默认高亮时就得不到低亮的颜色

fterm,cterm中如果你的默认背景被设成了不同于黑色的另一种颜色
*[40m会切换到默认背景颜色而不是黑色，
sterm则可能切换到黑色

一般来说BBS里面一行代码的长度最多254个字符(一个中文字算两个字符)，
对于活动看板等的，可能还有更严格的限制，允许的代码长度更短
因此有时候一定要使用尽量短的代码，重复的代码不要多次设置，例如：
*[0;32;41m红底绿字*[1;32;43m高亮黄底绿字*[5;1;31;43m高亮闪烁黄底红字
这行代码可以缩短为
*[0;32;41m红底绿字*[1;43m高亮黄底绿字*[5;31m高亮闪烁黄底红字

精简代码也是一门学问，这个就不在这里多谈了。
254个字符其实并不算多，一般一行是80个可见字符，
如果每个都切换一次颜色，设置前景色需要增加5个字符，
6*80=480，已经远远超出254了，
所以一行中颜色的变化还是受到一定限制的

除非到达屏幕底端，不然上一行末尾的显示属性会延续到下一行，这也是要注意的


lstar's AnsiViewer [ 4.ans ]

4. 签名档与说明档

一些人来学ANSI，最初的目的可能就是为了做一个漂亮点的qmd或smd，
进入工具箱编辑qmd或smd时，就和平时在版面上发文一样。

一般BBS上一个qmd最多是6行代码，但在编辑qmd时没有这个限制。
其实，一个用户可以有许多个qmd，系统会每6行一个帮你分割，
也就是说，如果你写了15行代码，那么就是3个qmd，
1~6行为第一个，7~12行为第二个, 13~15行为第3个。
编写时，如果底下的信息条打开，是可以看到当前的行列号的。

qmd是加在文章末尾的，彩色qmd注意尽量在每行的开始用ANSI定义一下当前的颜色，
而不要使用上一行属性的延续，以免正好在qmd中间分屏，使得色彩没有延续下来影
响到效果

发文时写完标题时，注意一下提示，这时候你是可以选择qmd的。

关于smd，你可以写很长，不过在telnet下，一般只能看到前面的16行左右。
对于彩色的smd, 如果可能的话，尽量在每行末尾将背景色切换到默认状态


lstar's AnsiViewer [ 5.ans ]

5. 超过6行的qmd

前面说了每个qmd最多6行，那么确实想要超过6行的qmd怎么办呢？
如果用上一些特殊的ANSI转义序列，这还是可以办到的
(只要BBS系统不过滤掉这些特殊代码)

先介绍一下要用到的光标移动代码：
*[A 光标上移 *[B 光标下移 *[C 光标右移 *[D 光标左移

可以加一个数值表示移动的单位，
例如*[3A是上移3行，*[6D是左移6列，默认值都是1个单位
光标不会移出屏幕，最多到屏幕边界

一般结合使用*[B和*[D就不难完成超过6行的qmd
比如第6行这样写：文本1*[B*[80D文本2

*[B下移一行，*[80D确保移到开头了，当然上例根据实际情况用*[5D也就可以了，
这样在telnet下查看带有此qmd的文章时，"文本2"这几个字就显示在第7行了

使用这种qmd，文章不要太长，最好所有内容都在一屏之内显示完毕，
过长的话或许会有问题，影响到效果

虽然能用控制符扩展长度，但是代码空间只有254*6，不可能做得太长
越长可能遇到的问题越多。

其实想要长的qmd还有一种变通的方法，那就是发文时直接在--这两横下面写内容，
那么要写多长就写多长了，可以用复制粘贴等方法减少重复劳动。

另外，qmd太长也有喧宾夺主之嫌，未必合适。


lstar's AnsiViewer [ 6.ans ]

6. 彩色id,彩色昵称

BBS中id或昵称里一般是不允许使用ANSI的。
不过有时候看见某些人发出的文章标题处昵称是彩色的或者有闪烁等效果。
发表的文章，头上那些文章信息是系统加的，不可能人为修改。
做出彩色昵称等效果，其实是利用ANSI的光标控制，用新的内容覆盖掉旧的内容

还是先介绍一下需要用到的控制符：
*[H 光标定位，
实际使用时一般为*[0m;nH，其中m,n是两个正整数，表示将光标移到第m行第n列，
同样不能移出屏幕，所以一般m取1~24，n取1~80
*[s 存储光标位置
*[u 恢复光标位置(回到最近一次*[s所在的地方)
*[K 删除到行末(fterm和sterm用当前背景色填充，cterm用默认背景色填充)
*[f 作用和用法和*[H完全一样

现在看如何覆盖原来的内容，文章信息大致是这样的：

发信人: ???? (??????), 信区: ??????
标 题: ???????????????????
发信站: ???????????

发信人的id是从第1行第9个字符开始的, 如果在qmd里面写上*[1;9H并跟上自己加上
色彩的id，那么解释到这行时，光标会跳到第1行第9列(id开始处)，然后写上后面的内
容，将原先的内容覆盖掉，这样文章发出来，看到的就是彩色的id了
但是光这样还不行，光标移到顶上去了，id是覆盖掉了，可是其后面的内容(比如ip
等)也一同上移了，这可不是我们想要的效果。所以还要考虑把光标移回来，由于不可能
确定在第几行使用qmd，一般的方法是在*[1;1H的前面加上*[s，在适当地方加上*[u恢复
光标位置，例如
*[s*[1;9H相关代码*[u

同样的方式，也可以做出彩色昵称等
注意原有内容是无法修改的，如果覆盖上去的内容长度和原来的不一致，就可能会
有问题，比如正好将原有的某个汉字的左半部分覆盖留下了右半部分，造成乱码等。因
此，如果覆盖上去的内容长度与原来不一致，需要做点处理，比如用空格补齐长度，或
用*[K将光标所在位置直至该行行末的内容全删掉等等，用*[K的注意，fterm和sterm用
当前背景色填充，不是默认背景色的话先用*[0m等方法切换为默认背景色

使用这种方法的也有很多弊端，举例来说：

如果文章较长，翻页才解释到光标定位这行，这时候第一行已经不是原来的发信人
等的了，会将其他内容覆盖掉，也有可能造成乱码等

如果别人用r/a引用方式来回你的文章，是会引用你的qmd的，而代码并不认人，还
是会去覆盖第一行内容，明明是他的文章，显示的却是你的id，这就不妙了。而且这是
个没有办法解决的问题，好在默认的方式不会引用你的qmd。(因此注意了，不要在文章
正文里面写这种代码，会影响到回文的人的)

另外提一句，注意代码里面字母的大小写，如果不小心把*[u写成了*[U，会影响到
cterm2000的用户的，那是cterm2000的一个未公开的控制符


lstar's AnsiViewer [ 7.ans ]

7. 右方的垂直qmd

有的人将qmd放在右边，直着写或者贴上某幅ANSI图。原理和前面两种是一样的，就
是使用光标定位*[H，光标移动*[A*[B*[C*[D，光标存储恢复*[s*[u等，在屏幕的指定位
置书写。同样要记得把光标复原到原位(毕竟后面还要显示来源的)
如果用*[s*[u那么最好每行代码开始处用*[s结尾用*[u，当然对于这种情况，由于
qmd肯定是位于文章最后的，可以不用*[s*[u，而是在最后用*[22;1H等的把光标定位到
文章的最后

这种qmd可能会覆盖正文内容，如果不巧造成半个汉字还可能有乱码。因此，使用这
类qmd是应该记得控制正文中每行的字符数，免得被qmd覆盖。
为了最大限度避免乱码的出现，可以考虑开始覆盖某一行时，以*[K删掉当前光标位
置起直至行末的内容，并以一个空格开始。
例如：

*[s*[6;75H*[K *[1;32m旦 日*[u
*[s*[7;75H*[K *[1;32m复 月*[u
*[s*[8;75H*[K *[1;32m旦 光*[u
*[s*[9;75H*[K *[1;32m兮 华*[u

这样可以把竖写的"日月光华，旦复旦兮"8个字放在屏幕右边，用*[K删除原有内容，
以免覆盖半个汉字造成乱码。当然，有可能正好从后半个汉字开始删除，留下半个汉字，
每行*[K后的空格保证了可见字符不会和这半个汉字的字符结合出现乱码，至于那半个汉
字是没办法的，无法用ANSI来判断原有内容是不是汉字的第二字节。

建议长文中不用这种qmd，可以test一下，看做出来的某个qmd最多用在正文多少行
的文章里面不会发生问题


lstar's AnsiViewer [ 8.ans ]

8. 修改个人说明档上方的个人信息

原理跟文中使用彩色昵称一样，仍旧是光标移动和定位，看好相应内容在第几行第
几列，然后把光标定位到那里用新的等长内容覆盖原有内容。

再介绍一个控制符，*[2J, 作用是清屏，并且光标移到屏幕左上角。说明档以*[2J
开始，一上来就擦除屏幕上所有内容，然后一切就由你自由发挥了。

不过有的BBS会过滤掉smd里面的特殊ANSI转义序列，那么这招就不管用了


lstar's AnsiViewer [ 9.ans ]

9. 隐藏ip

这个问题也常有人会来问，其实想要别人看不到真实ip，那么穿梭或者用代理，
不然一般总是能看到真实的ip的

夜探好友/环顾四方状态里面的ip，可以在工具箱里面设置个人参数来隐藏

文末的ip，在qmd的最后，加上*[23;1H，或许能使来源那行显示在第24行而被底部
的信息条遮盖，但也要看情况，并非总能成功，对于达到一屏以上的文章，基本上肯定
会失败的；以前还流传有*[46这种利用不完整的控制符导致"藏掉"来源这行的方法 (放
在了屏幕可见区域外)， 这种还是不要用了，而且也不是一定成功，反倒有可能带来某
些不可预料的结果。在光华，利用代码上的一个"漏洞"，有一种方法可以把ip改成任何
你想要的文字，这种方法没有通用性，想了解的人可以去光华的精华区看看，虽然也会
造成一点不便，不过在光华这可能是最完美的修改文末ip的方法了

smd里面的ip，如果系统没有禁掉smd里面的特殊ANSI转义序列的话，可以用光标定
位*[H来覆盖原有的内容

在某些BBS，例如光华，确实会发现有些人的ip被改成了一些特定的文字，不管用何
种方式去查都无法得到真实ip，那是特殊设定，比方说站长可以隐藏ip。普通用户办不
到的。


lstar's AnsiViewer [ 10.ans ]

10. 延时控制

本是cterm2000自定义的一个控制符，*[nM，n是个正整数，表示延迟的毫秒数，

例如

*[40M日*[40M月*[40M光*[40M华

就是等待40毫秒，显示"日"，再等40毫秒，显示"月"，又过了40毫秒，"光"字出现，
再过40毫秒，最后的"华"字也显示出来了，在直到屏幕上最后一个延时控制处理完之前，
不响应用户的操作，显示完后才逐个执行，如果某些文字设为了闪烁，在延时结束之前，
也是不会有闪烁效果的

本来只有cterm支持延时控制，高版本的sterm也提供了支持。

这个控制符问题有两个很严重的问题：

一是fterm对该控制符解释大不相同，fterm里面*[nM是删除光标所在位置起的n行，
因此看出来效果也就大不相同。如果是在qmd里面使用延时的人要注意，千万不要在用定
位将光标移动到前面去的条件下使用*[0m，例如定位到第一行覆盖昵称而且做一个带有延
时的昵称，这会对fterm的用户造成很大的影响，在第1行的地方开始删除n行的内容，会
把正文删掉的。 因此用延时，要考虑到fterm下的效果，每次*[0m都应该保证不会删掉有
用内容。 假如非要做延时昵称这种，那么注意每次先定位到屏幕底端再用延时然后再跳
回来(尽量用光标定位)，如：*[23H*[40M*[1;19H

二是长时间的延时影响别人正常浏览，要注意的是*[1M并不是延时1毫秒，系统有个
响应时间，实际延时远大于1毫秒，所以如果*[0m用得过多，哪怕延时的数值加起来总和
不算太大，但实际的延时仍旧会较长，导致别人无法忍受。
cterm2000中，编辑>>系统设置>>高级，可以限制延时的最大长度，一屏内延时总长
达到该值时忽略其后的延时控制，但是它是加数值的，而不是根据实际的延时时间
高版本sterm，不能限制延时最大长度，但系统设置中可以关闭对延时的支持

某些BBS的精华区可能会看见一种延时的说法是定位到屏幕底端删除大量的行，是针
对fterm用的这套控制符提出的，但是这个方法不可取，首先是可能看不出延时效果，更
严重的是对cterm等的用户来说，你删除1000行(*[1000M)对他来说就是等待1秒钟，太漫
长了...

一般来说，用不着用户按什么键就有动态效果的都是用延时做的，不过有一种效果
例外，那就是所谓的跑马灯效果，感觉是运动的图像，实际用的是闪烁，如下

█████████
█ █
█ 这不是延时 █
█ █
█████████

这种效果是通过相邻两个全方块字符(█)使用相反的前背景色加上闪烁效果做成的

如*[0;5;31;42m█*[32;41m█*[0m效果就是：██


lstar's AnsiViewer [ 11.ans ]

11. 其他的非标准ANSI转义序列

cterm2000除了提供延时控制*[0m，还有另外3个公开的控制符*[G、*[I与*[F

*[G是响铃

*[I可用来改变字体，
*[I或*[0I 默认字体
*[1I 宋体
*[2I 黑体
*[3I 楷体
这个控制符fterm或sterm会忽略，不过对netterm的用户会有影响，
我没用过netterm，这里不讨论

*[F是对屏幕某一区域按一定规则填充颜色，基本上没人使用，
ctermIII也不再支持该控制符

未公开的控制符*[U，请不要使用
*[nU，n是一个正整数，cterm读到该控制符会弹出URL确认框
将*[nU后面的n个字符显示在URL确认框里面

fterm的一些非标准ANSI转义序列有：
*[nM 删除当前行开始的n行(与cterm,高版本sterm的延时控制冲突)
*[nL 插入n个空白行，不改变当前光标位置
*[nP 删除n个空格
*[n@ 插入n个空格，不改变当前光标位置(cterm2000不认为@是转义序列结束的标志)

个人认为fterm的这几个控制符没什么实用价值

高版本sterm还提供对改变标题栏和状态栏的控制符的支持，这个请不要使用


lstar's AnsiViewer [ 12.ans ]

12. 复制与粘贴

学了一点ANSI控制符了，可以做出彩色的qmd了，但想要做出一些pp的qmd依旧很难

在自己还不会做的时候，借鉴别人的作品，拿来改一下是个不错的主意，当然要注
意一下版权问题，这个后面会讲。

复制一般的内容自然不必多说，快捷键一般是Ctrl+Insert和Shift+Insert

下面讨论一下fterm,sterm和cterm如何带颜色复制屏幕的内容

·fterm:
确认开启"ANSI彩色复制"和"ANSI彩色粘贴"(编辑菜单，工具条，右键菜单上都有)
然后复制粘贴。

右键菜单上面有一个"块状复制"项，
选中的话鼠标按矩形区域选取内容，不选中的话按行来选取内容

·sterm:
确认开启"copy with color code"(edit菜单，telnet工具条，右键菜单上都有)，
然后复制粘贴

sterm右键菜单上有"Rectangle select area"，
工具条上相对应的是"Switch select mode"

sterm下的操作与fterm基本上是一致的

·CtermIII:
工具条上面"选择矩形区域"，
这个按钮按下时，不仅切换到矩形区域选取状态，同时也进入了彩色复制的状态，
此时复制下来的内容时会加上颜色代码的。

cterm中矩形选取和彩色复制是"捆绑"的

·Cterm2000:
没有任何状态按钮
当你按住Shift来选取内容时，就是矩形选取，而且复制下来的话是有颜色代码的
(复制的时候不需要按住Shift)

关于彩色复制粘贴,还有几点需要说明:

1. 色彩代码是软件根据屏幕显示加上去的，所以一般与原作中的代码不同。
只识别前背景色高亮闪烁和下划线，不支持反显

2. 一般来说，ctermIII生成的代码最简短，fterm次之，然后是sterm，
而cterm2000生成的代码最为冗长

3. 尽量在同一个软件内复制粘贴，
cterm,sterm复制下来的内容，控制符号处是两个ASCII27符号连在一起的，
而fterm复制下来的内容控制符的地方就是一个ASCII27字符。

高版本sterm已经能正确识别这两种格式，粘贴到高版本sterm不会出问题

高版本fterm, 直接粘贴来自cterm或sterm的内容是不行的，
不过可以打开辅助输入窗，先贴在辅助工具窗，然后点Send，
这时候会自动处理为正确格式。

cterm里粘贴来自fterm的内容，只能预先转换了；可以用DoubleEsc这个软件，
也可以在支持替换功能的文本编辑器(如UltraEdit,WindowsXP的记事本等)

4. 注意设置对粘贴排版的影响，如果粘贴大幅作品，可能会遇到自动换行问题，
相关设置有：

① BBS工具箱的个人参数设定里面，"自动排版宽度预设为 78 列"这项关闭

水木没有这个问题；(也没有这个选项)

光华则还有另一个方式，在编辑文章的时候按ESC再按X可以切换当前的
自动排版宽度，可以选择10~254中的一个，选最大就是了，发表后，改
设置会恢复到默认值；这样喜欢保留78字符自动排版的不必每次去工具
箱切换了

② cterm2000: 编辑>>系统设置 中的"粘帖自动排版" 这项请关闭

③ sterm: 右键菜单上"Paste with Word Wrap"这项用来设置状态，不要选上
这是2.547版的情况，记忆中早一点的版本似乎是Shift+Insert是带自
动排版的，不想要自动排版只能通过右键菜单上另一项来完成

④ 由于是软件加的代码，有时候恐怕本就超过一行254个字符了，
这就只能手工精简一下再粘贴了

5. cterm2000复制较大区域时会出错，这是一个bug，没办法的。
而且有的机器上有问题有的没有，至今没总结出来规律，看各人运气吧

6. 注意BBS类型不要设错，
FireBird系统和Maple系统控制符输入方式不同，设错的话也会造成粘贴有问题


lstar's AnsiViewer [ 13.ans ]

13. 区块操作和剪贴簿操作

这是一个原样复制别人代码的方法，不过只能转移到同一个站点同一个id；
无法通过此法将原码存为文本文件，也不能转到其他站点；
此方法只能整行搬运，不能矩形区域操作

BBS系统为每个id提供8个剪贴簿，
剪贴簿里的数据在被新内容覆盖之前会一直保留，下站也不丢失，
编辑时分别用ESC-I和ESC-E来读写BBS剪贴簿

要看到一个作品的原码并不难，比如转回自己的信箱用E编辑查看，对于版面上的文
章可以采用r引言的方式回文(r引言已经包含了qmd，一般够了，
想要全部包括用a引言方式，不过这会在每行前面加冒号和空格，以后还需要多一步
删除的操作)，得到需要的内容后Ctrl+W,a取消发文就是了

现在给出具体操作，编辑文章状态看见了想要的代码，将光标移到想要的第一行，
按下Ctrl+U, 再将光标移动到最末一行，再按一下Ctrl+U，这时选中部分的内容反显了
(水木由于控制符使用黄颜色，每行的反显到第一个控制符为止，不过实际同样是整行
选中的，可以不必理会)，现在按ESC再按E，屏幕上出现一行提示，问你存入第几号剪
贴簿(0~7)，自己选吧，比如就用0号。现在可以退出这篇文章的编辑了，转到编辑qmd
的状态，光标移到想要插入新代码的位置，按ESC再按I，选择剪贴簿，比如0号，就把
相应剪贴簿的内容贴过来了(剪贴簿里面的内容还在)

相关的区块操作还有：
1. 复制区块Ctrl+C：可以将你标定的区块在当前光标位置重写一份，这种复制只
用在源和目标在同一个文件内的情况，也就是说同一篇文章
内复制一个区块的内容可以用Ctrl+C而不需要通过一个剪贴
簿中转
2. 删除区块ESC-D： 将你标定的那些行全部删除
3. 清除区块ESC-Q： 取消区块标定 (以便标定一个新的区块)

区块操作(标定，复制，删除，取消标定)可以统一在ESC-M中按照提示来完成, 不
过水木、zixia等ESC-M中没提供删除区块


lstar's AnsiViewer [ 14.ans ]

14. AsciiArt礼节

AsciiArt的制作是一个十分消耗时间的工作。因此每个作品都包涵着作者的汗水
与艰辛。因此在使用他人作品的时候最好征得原作者的同意再使用。

作品转载、交流时，请注明原作者，并说明该作品为转载作品。并且尽量不要改
动。

尊重作品，尊重作者。是每个AsciiArt制作者和爱好者的基本要求。


lstar's AnsiViewer [ 15.ans ]

15. cterm的拷贝TCP包功能

对于cterm2000，按F4可进入拷贝TCP包状态，此后每收到一个服务器传来的TCP数
据包，cterm都会把其中的内容拷贝下来，直到达到最大的TCP包数，这个数值可以在
系统设置里面修改，允许设置1~10中的一个数值，要注意的是并不是1个TCP包复制一
屏，有可能两个1屏，所以10个可能只能复制5屏，不过有时也会1个复制1屏的(比如当
前屏)，要分清各种情况比较麻烦，就先按2个1屏来算，多复制了最多过一会儿截掉。
要复制当前屏，就按Ctrl+L。

说了这么多，这个功能有什么用呢？
由于它直接把传来的TCP包中的内容复制下来，所以复下来的代码基本上就是作品
中的原码了(从有些站点拷贝个别地方会多一点光标控制，需要手工还原)。
像复制带有光标定位，延时控制等的作品，普通的复制就不行了，想要转到一个
不支持转信的站点或许用得到这项功能(在同一个站点内只需要用BBS剪贴簿中转)
Cterm2000复制大一点的区域可能会有问题，那么像复制十大这种整屏的东西就可
以用拷贝TCP包功能了。
不过cterm2000下这个功能也有Bug，就是在2k/XP下这个功能一般只能用一次，想
再用的话只有关掉cterm再开一次才行(98下一般没有问题)

ctermIII也提供相应的功能，而且操作变得简单多了，也没有那个bug
点工具栏上的相应按钮(或通过菜单：工具>>拷贝TCP包)，
指定目标文件后，进入拷贝状态，直到再通过同样的操作退出该状态。
那个文件里面就保存了期间收到的各个TCP包的内容，
可以用ctermIII的文章编辑框读入。


lstar's AnsiViewer [ 16.ans ]

16. telnet下编辑文章时的一些功能

区块操作：ESC-M
标定区块：Ctrl+U
复制区块：Ctrl+C
删除区块：ESC-D
清除标定：ESC-Q

BBS剪贴簿操作
读取：ESC-I
写入：ESC-E

删除操作
删至行末：Ctrl+K
删除整行：Ctrl+Y

ANSI辅助 (呵呵，记不住颜色代码问题也不大)
设置前景色 ESC-F
设置背景色 ESC-B
还原色彩(*[0m) ESC-R
看ANSI效果 ESC-C

光标移动
跳转到指定行 ESC-G
跳转至第一行 Ctrl+S
跳转至最后一行 Ctrl+T

查找功能
查找指定字符串 ESC-S
继续查找 ESC-N
(不能查找ANSI控制符，查找不区分大小写)

状态设置
打开/关闭讯息栏 ESC-L

特殊(以下适用于光华)
设置每行的字符数(10~254) ESC-X
切换插入/改写 Ctrl+O (Cterm中有用，Cterm中Insert是插入ANSI控制)

特殊(以下适用于水木)
符号输入 Ctrl+O
Ctrl+G与ESC-G相同(跳转到指定行)

在水木、紫霞、光华和水源Ctrl+R都是切换汉字整字处理方式
水木、紫霞的汉字整字处理方式在底下的讯息栏上没有相应提示，而光华、水源有
紫霞、光华和水源的Ctrl+Q里面Ctrl+R的叙述与实际作用不符
紫霞的Ctrl+G也和ESC-G相同，Ctrl+Q里面也写错了


lstar's AnsiViewer [ 17.ans ]

17. 相关软件

手工调整色彩毕竟是比较累的，利用一些软件就方便多了

AnsiEditor，一个不错的ANSI制作软件，功能强大
(2.03d以后可以设定代码中控制符的方式，不再有无法粘贴到fterm的问题了)
……
Fterm自带了一个ANSI编辑器，也可以试试，不过功能不及AnsiEditor

将图片转成ANSI图的软件，推荐bmp2ascii，
可以自己选定使用的颜色以及字符的范围，可以设定图像缩放比例。
……

DoubleEsc，处理控制符的. ……