edit.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 67 行
C
67 行
// edit.c
#include "/doc/help.h"
inherit F_DBASE;
inherit F_CLEAN_UP;
void create()
{
seteuid(getuid());
set("name", "编辑指令");
set("id", "edit");
set("channel_id","在线编辑");
}
int main(object me, string file)
{
if( !file ) return notify_fail("指令格式:edit <档名>\n");
if( in_edit(me) ) return notify_fail("你已经在使用编辑器了。\n");
if (!(int)SECURITY_D->valid_write(resolve_path(me->query("cwd"), file),me,"write"))
return notify_fail("你没有足够的读写权利。\n");
log_file("edit/"+geteuid(me), sprintf("edit %s %s\n", resolve_path(me->query("cwd"), file), ctime(time())) );
seteuid(geteuid(me));
ed(resolve_path(me->query("cwd"), file));
if(!me->query("env/no_edit_msg"))
CHANNEL_D->do_channel(this_object(),"sys",me->query("name")+"("+me->query("id")+")"+"编写了"+resolve_path(me->query("cwd"),file)+"。");
return 1;
}
int help(object me)
{
write(@HELP
指令格式 : edit <档名>, edit here
利用此一指令可直接在线上编辑档案。
/向前搜索匹配项
?向后搜索匹配项
=显示当前所在行数
a在当前行的后面添加
A与'a'相似
c修改当前行,替换查询文本
d删除一行或多行
e用另一个文件覆盖当前文件
E与'e'相似,但只在文件被子修改之后有效
f显示/改变当前文件的文件名
g搜索并对匹配的行执行某种命令
h帮助
i在当前行前插入字符
k用一个字符标记当前行
l列出一行或多行(带控制字符)
m移动一行或多行到指定的位置(行号)
n标记行号
O同'i'
o同 'a'
p列出一定范围的行
q退出
Q退出,而且不存
r在文件尾部或指定行后读入其它文件
s搜索并替换
set查询、改变或存储某种设定选项
t拷贝一行或几行到指定行数
v搜索并对不匹配的行执行某种命令
x存文件并退出
w写入当前文件(或指定文件)采用覆盖
W现'w'相似,采用追加
z显示20行,可用 . + - 三种标记
Z显示40行,可用 . + - 三种标记
HELP
);
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?