LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: cioworld

linux下的编辑软件都没有TextPro好用,高手能做一个吗?

[复制链接]
发表于 2004-3-4 09:56:07 | 显示全部楼层
楼上需要注意的是 gvim 的行的概念和 win 中的软件的概念不一样,小心区别 wrap 在 gvim 中的概念。另外,在 win 中的我没有用 XEmacs,但是使用了 emacs,在按照说明安装了一个叫 mule-gbk 的东西之后,再在 _emacs 中添加上:

;; using gbk
(setq w32-charset-info-alist
        (cons '("gbk" w32-charset-gb2312 . 936) w32-charset-info-alist))

;; for change default font size.
(create-fontset-from-fontset-spec
"-*-Courier New-normal-r-*-*-14-*-*-*-c-*-fontset-gbk" t)

(load-file "../site-lisp/mule-gbk/chinese-gbk.el")
(load-file "../site-lisp/mule-gbk/fontset-gbk.el")

;; Set chinese - GBK
(set-w32-system-coding-system 'chinese-gbk)
(set-selection-coding-system 'chinese-gbk)
(set-keyboard-coding-system 'chinese-gbk)
(set-language-environment 'chinese-gbk)
(setq locale-coding-system 'chinese-gbk)
(setq current-language-environment "Chinese-GBK")
(set-buffer-file-coding-system 'chinese-gbk)
(set-terminal-coding-system 'chinese-gbk)

(load-file "../site-lisp/mule-gbk/characters-gbk.el")

之后,就可以使用中文了。

因为 XEmacs 与 emacs 很多地方是兼容的,所以应该也是可以的。试试吧
发表于 2004-3-4 11:14:11 | 显示全部楼层
我象你推荐jedit,这个对中文支持很好。
发表于 2004-3-4 13:39:24 | 显示全部楼层
gvim也有矩型编辑的功能 在win下我没有试过


不知道你想实现的是怎样的功能 使用正则表达式可以实现 把例子发上来吧
发表于 2004-3-4 13:45:49 | 显示全部楼层
如下编排

  1. 无双大侠太强了,小弟佩服的五体投地。看来以后要精研vim、emacs,
  2. 才能彻底不用MS了。

  3. 我先当了XEmacs-21.4.10在WIN下用,emacs里有个矩
  4. 形编辑功能,对于文本下的表格编辑太有用了,自动规范首

  5. 行的操作,速度也很快。可是这个东西在WIN下是英文,看中
  6. 文全是乱码,没法用(在linux下用没问题),还是Gvim汉化的好。


  7. 小弟当了Gvim6.2在WIN上试了一下。其余还不错。就是在删除换行时有了问题。
  8. 当每一行都是到大半行就换行了,并且每一行之间还有一个空行,这个问题用这个 s/\n\n/\n/g 命令没问题,但要光标移到第一行的末尾才行。
  9. 但当每一行都是大半行换行,行与行之间没有空行,只有段与段之间才有两个空行。我要怎样做才能删除换行,并且还保留段落不变呢。我试着减了一个n还是不行,全挤到一起不说。删除换行处的硬回车变成了 ^@ ,虽变成一行了,可中间有这两个残余分子,实在头痛。
  10. 最后我用了s/\n/ 结果没了 ^@ ,文章全挤在一起了。我要怎才能保留段落结构呢?
  11. 看来真要学学正则表达式了。

复制代码



操作为
:%s/^\(.\+\)$\n\(.\+\)/\1\2/g


  1. 无双大侠太强了,小弟佩服的五体投地。看来以后要精研vim、emacs,才能彻底不用MS了。

  2. 我先当了XEmacs-21.4.10在WIN下用,emacs里有个矩形编辑功能,对于文本下的表格编辑太有用了,自动规范首

  3. 行的操作,速度也很快。可是这个东西在WIN下是英文,看中文全是乱码,没法用(在linux下用没问题),还是Gvim汉化的好。


  4. 小弟当了Gvim6.2在WIN上试了一下。其余还不错。就是在删除换行时有了问题。当每一行都是到大半行就换行了,并且每一行之间还有一个空行,这个问题用这个 s/\n\n/\n/g 命令没问题,但要光标移到第一行的末尾才行。
  5. 但当每一行都是大半行换行,行与行之间没有空行,只有段与段之间才有两个空行。我要怎样做才能删除换行,并且还保留段落不变呢。我试着减了一个n还是不行,全挤到一起不说。删除换行处的硬回车变成了 ^@ ,虽变成一行了,可中间有这两个残余分子,实在头痛。最后我用了s/\n/ 结果没了 ^@ ,文章全挤在一起了。我要怎才能保留段落结构呢?
  6. 看来真要学学正则表达式了。

复制代码


.\+表示任意一个字符(非换行符) 并且需要有最少一个字符 这样就可以合并两行
发表于 2004-3-4 13:48:10 | 显示全部楼层
emacs太大了 运行速度有点慢

所以我还是喜欢vim 小巧 按键也少 (没有meta 键等之类的 ) 命令简单
发表于 2004-3-4 14:20:53 | 显示全部楼层
中文处理本来就是linux的弱项,vim也好,emacs也好,对中文都只是“支持”而已,emacs甚至要用到一个非标准的插件才能支持GBK,它的中文处理能力可想而知。
另外要学的话,也没必要学Shell,直接学Perl就行了,Perl的文本处理能力天下第一,而且在linux和windos上都能用。最新版的5.83对中文和Unicode的支持都不错,许多TextPro做不了的事,我就让Perl去做,很方便的。
发表于 2004-3-4 15:05:44 | 显示全部楼层
像s/,/,/g这样的作法,对Asc码是0x40以下的字符是有效的,但如果要替换的是0x40以上的字符,比如ABCD之类的,用这种方法就不行了。
类似的例子还有很多,通用的正则表达式不是为中文设计的,所以应用起来会有很多麻烦。TextPro 的强大之处就在于它有一套很实用的中文正则表达式。无双兄想必没处理过中文文本,不知其中的辛苦。
发表于 2004-3-4 15:38:03 | 显示全部楼层
看来textpro之专门针对你们这群用户做的
开始我也想推介VIM,不过看来你的要求挺多,且已经有了一个既有工作流程,应该不容易改,你不如干脆装个 wine 算啦
 楼主| 发表于 2004-3-4 15:38:47 | 显示全部楼层

emacs速度确有点慢,可不知vim中有无矩形编辑功能。

我不习惯用WORD的表格来做东西,因为存不了txt文件。我经常在文本中排表格。比如:

  1.                          工作人员成绩表

  2.   姓名        工作时间        Email地址       实习成绩      员工工作电话

  3.   安春城      7:30-4:30       [email]81@sina.cn[/email]      60           (841)722-3940
  4.   窦炳臣      9:30-6:30       [email]73@sohu.com[/email]     90           (841)827-3344
  5.   董永坡      10:30-7:30      [email]63@263.net[/email]      60           (412)734-0492
  6.   范永波      6:30-3:30       [email]78@yahoo.com[/email]    80           (841)437-9320
复制代码


在emacs里,我想把工作时间这一列,放到工作电话后面去,用矩形编辑就很轻松地把工作时间这一列放到电话后。这在WIN下面是无法实现的。
在emacs里,先定义一个覆盖表格第二列的矩形。方法是:先把光标移动到它(工作时间)的左上角,然后按下“C-@”设置文本块标记;然后再把光标移动到矩形的右下角再住右一个空格的位置(在78@yahoo.com前面)。这样,矩形区域就定义好了。
然后用“C-x r k”删除矩形,再把光标移动到工作电话后面,然后按一次TAB键,把光标移动到想重新插入矩形区域的地方。按下“C-x r y”,插入刚删除的矩形区域。大功告成。

另外,如果我觉得Email地址这一列与实习成绩这一列的间隔小了点,我想加大点。就先把光标移动到实习成绩的左上角上,然后按“C-@”;
现在需要定义准备插入到两栏之间的间隔量。移动光标到矩形的底部(80的后面),然后按“C-x r o”;就会插入两个空格(一个中文字符宽)宽的空白矩形。它会把表格中的其他内容推向右边。

最后。我想把Email地址这一列删除不要。就先把光标移动到Email地址的E字上,然后按“C-@”;
然后把光标移动到最后一个mail地址(78@yahoo.com)之后再空一个空格。按下“C-x r c”,删除了mail地址,但确留下了一块空白。只好再将光标移动到工作时间后的空格处,然后按“C-@”;再移动光标到最后一行80再往前几个空格的某个位置上,按下“C-x r d”。好了,打完收功。

这是emacs里的操作情况,还想请教无双大侠,不知vim里要怎样操作呢?
发表于 2004-3-4 15:56:02 | 显示全部楼层
哈哈,看来无双和我一样也是vim的爱好者。
我也学过一点emacs,按键确实多。vim启动是比emacs快多了,平时看看系统配置文件用它最好了。vim和emacs学一足矣,不要全都学,有时按键会混淆。

vim里的矩形操作先在普通模式下按CTRL-V键,屏幕下面会显示VISUAL BLOCK,然后就可以可视化的选择了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表