LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2004-3-4 17:30:24 | 显示全部楼层
windows下也有可以操作矩阵的文本编辑器,ultraedit和textpad(不是textpro)都可以。
另外,emacs和xemacs,vim和gvim都有win32版,sed和awk之类的也一样,所以在这方面linux真的一点优势也没有。
发表于 2004-3-4 22:49:58 | 显示全部楼层
看到cloudzm也是vim爱好者 高兴 握个手先


  1. 像s/,/,/g这样的作法,对Asc码是0x40以下的字符是有效的,但如果要替换的是0x40以上的字符,比如ABCD之类的,用这种方法就不行了。
  2. 类似的例子还有很多,通用的正则表达式不是为中文设计的,所以应用起来会有很多麻烦。TextPro 的强大之处就在于它有一套很实用的中文正则表达式。无双兄想必没处理过中文文本,不知其中的辛苦。

  3. 最后由 BBDD 在 03-04-2004 07:09 编辑
复制代码


不知道你是什么得出的
在vim下完全支持中文的正则表达式

而且我也不是没有试过


  1. 另外对中文的支持问题
  2. 中文处理本来就是linux的弱项,vim也好,emacs也好,对中文都只是“支持”而已,emacs甚至要用到一个非标准的插件才能支持GBK,它的中文处理能力可想而知。
  3. 另外要学的话,也没必要学Shell,直接学Perl就行了,Perl的文本处理能力天下第一,而且在linux和windos上都能用。最新版的5.83对中文和Unicode的支持都不错,许多TextPro做不了的事,我就让Perl去做,很方便的。
复制代码


vim早在早期就已经实现了对中文的编辑与打印那时还是xcin的时代 没有那么多的中文输入法 以及也没有几个编辑器支持显示中文 i18n标准也没有制定
而vim则是可以显示中文并编辑的那个 但是那时删除中文时可能会有半个汉字的问题

现在的vim完全没有问题
所以也不知道你的仅是支持是什么样的标准 用怎样的标准来判断什么是仅是支持

现在我工作时 在win下与linux下使用的都是vim 也没有发现什么问题
并且 就无级undo功能 与强大的命令功能来说 这点绝不是什么text pro 或是ultra edit可比的 (我以前也使用过ultra edit 但是安装gvim后基本不使用了 原因是因为ue没有colorscheme功能 并且字体比较细 看久了会觉得累 vim的功能都是后面不断使用中学习的 那时还不知道有多少功能 )
你可以限制要操作多少行 如果发现错误了 那就undo 然后修改自己的命令 一直到成功
这点在其它编辑器可能也会有 但是就界面的操作也够你烦的 (如操作多少行 到什么范围 可能需要自己选定范围吧 而在vim中只要输入命令范围的条件就可以 不用你拖光标选中几千行 然后再点出一个对话框 说明(只用于选择部分 ) 够累的)


可视块模式在win下没有试过 但是在unix下 cloudzm已经说出了方法
在win下一样会有 不过我没试过也就不好意思说什么了 (点右键可以发现有块模式 但是我没有试看是什么内容 )

再就是 能不写脚本就不写脚本 如果一个工具能实现的事 为什么要肋几个工具来实现呢
在vim中如果处理出错了 选择undo就可以取消 但是写脚本 从远行脚本到检查看是不是正确 再修改 够累的 而你所编辑的只是一个文件 而不是希望实现怎样的功能 所以我想你不会希望一会打开编辑器一会进入命令行状态下敲命令吧
当然我也是一个perl爱好者 但是 vim能完成的事 就让vim去完成 使用vim觉得复杂了才会交给perl处理

PS 要使用哪个编辑器是自己的自由 在这里并非强加给谁一定要使用vim或是什么样才能解决问题
所以;回复只是因为想让更多的人不被误解
发表于 2004-3-4 22:58:53 | 显示全部楼层

  1. windows下也有可以操作矩阵的文本编辑器,ultraedit和textpad(不是textpro)都可以。
  2. 另外,emacs和xemacs,vim和gvim都有win32版,sed和awk之类的也一样,所以在这方面linux真的一点优势也没有。

复制代码



linux下还有很多命令 没有移植到win下来

当然 如果你只是应用 那没有什么要紧 或是不会觉得不舒服

不过 罗卜青菜各有所爱 喜欢用哪个平台是自己的自由

linux也不需要谈什么优势不优势的 毕竟linux只是让喜欢用的人去用 而不是一种宗教或是其它 叫大家必须用

同样win也只是一个平台 无论它的gui是多么好 (比xwin 当然不是跟mac比) 但是一样有不喜欢的人
还有很多的平台 如amiga等 世界上还有很多的人在使用

所以 你喜欢什么就用什么 而不用说优势 如果真说优势的话那要看比哪个方面了 如果说图形界面软件的易用性 那是没有win多 并且也不像win下那么多好软件 以前一个asdsee让linux下的人感觉很不适应 而现在我们在linux下有了很多看图软件 还有其它媒体软件 如xmms mplayer gimp openoffice 虽然比不上ms office 但

但是如果你懂命令 那你所得到的 比通过gui得到的功能更要强大  在这点上没有什么可比性
就像到现在还有很多人只喜欢控制台而不喜欢x一样 更不用对他们说windows了
发表于 2004-3-4 23:33:51 | 显示全部楼层
to start a blockwise Visual selection in windows system, you can use CTRL-Q instead.
to get more information, please
: help visual-mode
: help CTRL-V-alternative
最初由 无双 发表
看到cloudzm也是vim爱好者 高兴 握个手先

可视块模式在win下没有试过 但是在unix下 cloudzm已经说出了方法
在win下一样会有 不过我没试过也就不好意思说什么了 (点右键可以发现有块模式 但是我没有试看是什么内容 )
发表于 2004-3-4 23:43:37 | 显示全部楼层
装个 cygwin ,支持很多东西

最初由 无双 发表
linux下还有很多命令 没有移植到win下来

当然 如果你只是应用 那没有什么要紧 或是不会觉得不舒服

不过 罗卜青菜各有所爱 喜欢用哪个平台是自己的自由
发表于 2004-3-5 00:32:38 | 显示全部楼层

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

呵呵,emacs 给人的感觉就是复杂,当然他确实强大

如果是vim
将光标移动到你想移动的块的任何一个角落,按Ctrl+V( windows:Ctrl+Q),启动块选择,然后任意移动光标,结束你的选择,然后按x,cut了它,再把光标移动到你想插入的地方,按p,搞掂,快不,嘻嘻

是了哦,各位用vim的兄弟,大家可以用 Ctrl+[ 来代替 左上角的 Esc,这样关节又可以减少磨损啦,不过这个在台机键盘比较适用,记得哦,按Ctrl是用左手掌边缘按的哦 :-P

最初由 cioworld 发表
我不习惯用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-5 00:35:08 | 显示全部楼层

感谢!

我在gvim里试了一下.可视化情况下,也能实现在emacs中的矩形编辑的功能.并且有过之而无不及。因为在Gvim中可以用鼠标来操作选择块。进步啊。
发表于 2004-3-5 00:52:34 | 显示全部楼层
正则表达式,是我认为最神奇的东东了。它能很精确的进行定位和处理,而且linux下VIM/SED有管道和脚本,你可以让很多类似的处理写成一个脚本,完全自动而且精确的处理好文本格式问题。用久了你的脚本多了,你会发现它比WIN下任何宏都要好用,因为它可以任意组合。甚至你不用打开VIM都可以完成你以前处理过的类似功能。

无双兄的VIM造诣实在是令我很佩服。我也在不停的使用VIM和SED,正则表达式让我爱不释手阿。不过不是很熟练。呵呵。
发表于 2004-3-5 09:00:43 | 显示全部楼层

vim

vim是世界上最好的两种编辑器之一,不要总是用windows的观点来看待linux上的软件,本来的操作方式就是完全不一样的。
发表于 2004-3-5 09:31:38 | 显示全部楼层
我想无双兄还是没用过TextPro,不知道什么是中文正则表达式,下面是TextPro的统配符列表:

半角部分:
           .(句点)   匹配任何字符;
           \a        匹配任意英文字母;
           \~a       匹配除字母外的任意字符;
           \d        匹配任意数字;
           \~d       匹配除数字外的任意字符;
           \h        匹配任意词首字符(字母及下划线);
           \~h       匹配除字母及下划线以外的任意字符;
           \l        匹配任意小写字母;
           \~l       匹配除小写字母外的任意字符;
           \o        匹配任意八进制数字相匹配(0-7);
           \~o       匹配除八进制数字外的任意字符;
           \p        匹配任意半角标点符号;
           \~p       匹配除半角标点以外的任意字符;
           \s        匹配任意空白字符(空格、TAB);
           \~s       匹配任意非空白字符;
           \u        匹配任意大写字母;
           \~u       匹配除大写字母外的任意字符;
           \w        匹配可成词的字符(字母、数字及下划线);
           \~w       匹配成词字符外的任意字符;
           \x        匹配任意十六进制数字(0-9,a-f, A-F);
           \~x       匹配除十六进制数字外的任意字符;

           全角部分:
           \f        匹配任意双字节字符(汉字或全角符号);
           \~f       匹配任意单字节字符;
           \A        匹配任意全角ASCII字符;
           \b        匹配任意收录在BIG5码集中的双字节字符;
           \~b       匹配未收录在BIG5码集中的双字节字符;
           \c        匹配任意汉字(不包括符号);
           \~c       匹配非汉字的双字节字符;
           \D        匹配地支字符(子丑寅卯……);
           \g        匹配收录在GB码集中的双字节字符;
           \~g       匹配非收录在GB码集中的双字节字符;
           \G        匹配大写希腊字母
           \j        匹配日文片假名
           \J        匹配日文平假名
           \k        匹配小写希腊字母
           \K        匹配日文平假名;
           \m        匹配数学符号;
           \n        匹配中文数字(一二三四……);
           \N        匹配大写中文数字(壹贰叁肆……);
           \P        匹配全角标点符号;
           \r        匹配小写俄文字母;
           \R        匹配大写俄文字母;
           \s        匹配数学符号;
           \S        匹配中文序号(⒈⒉⒊⒋……);
           \T        匹配天干字符(甲乙丙丁……);
           \V        匹配竖排标点符号;
           \y        匹配拼音字符;
           \Y        匹配注音字符;
           \Z        匹配制表字符;


你可以看到,它的半角部分和普通的正则表达式没什么区别,而它全角部分是独一无二的。
举个例子,在Shell区有人问怎样才能把GBK的特有汉字和普通GB汉字分开(http://www.linuxsir.cn/forum.php?mod=viewthread&tid=90158)。在TextPro里只做到这一点很容易,只要用\g或\~g就行了。
请问用vim或emacs的话该怎么办呢?

这就是我说的,支持中文和具有强大中文处理能力的区别。

“再就是 能不写脚本就不写脚本 如果一个工具能实现的事 为什么要肋几个工具来实现呢”

我想我同意这句话。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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