shandian 发表于 2014-6-5 10:32:35

有没有自动把//注释改为/**/的软件?

IAR下的非英文注释(//形式),不知道为什么出现了问题。显示都能正常显示,只是编译的时候后一行的代码好像也被跟到注释后面去了,导致出现了非常多的编译错误(显示是在两行的,说明IAR的Editor处理的是正常的,只是编译器处理时出了问题)。把注释删除,或改为/**/形式就好了。但是因为注释实在太多,手工改工作量太大了。

不知道有没有能自动把//形式的注释改为/**/的软件?

kebaojun305 发表于 2014-6-5 10:33:09

自己写脚本搞定

pll19840511 发表于 2014-6-5 10:42:56

脚本PYTHON

shandian 发表于 2014-6-5 10:54:31

我在网上找到了脚本代码,还不知道怎么用,我再摸索下看。

shawn_bu 发表于 2014-6-5 10:57:34

自己写一个好了。花不了多长时间。

mypear 发表于 2014-6-5 11:15:20

用UE貌似可以,查找://*^r^n替换为空格可删除

shandian 发表于 2014-6-5 11:19:20

mypear 发表于 2014-6-5 11:15
用UE貌似可以,查找://*^r^n替换为空格可删除

是用替换命令把所有//*^r^n替换为/***/^r^n吗?
替换目标里,有3个*,中间这个是通配符,另外两个要怎么表述呢?

lulinchen 发表于 2014-6-5 11:35:31

用perl写一个会很方便

erpao 发表于 2014-6-5 11:51:19

vim啊,vim专干这事。

qingyin2009 发表于 2014-6-5 11:57:50

用这玩意儿后,老是想注释屏蔽很多程序段,却没办法注释,就都改为//了。。。

shandian 发表于 2014-6-5 12:09:39

erpao 发表于 2014-6-5 11:51
vim啊,vim专干这事。

能详细说说嘛?我刚才下载安装了一下,是Windows版的。
要怎样操作呢?我在菜单下看了一下,功能不多,应该是要通过命令来实现的吧?
能传授一下经验吗?

yuyu87 发表于 2014-6-5 12:16:24

随便用个外部的编辑器,带正则表达式的,查找替换,或者用记事本写个脚本另存为VBS,简单的,

wxfje 发表于 2014-6-5 12:29:26

qingyin2009 发表于 2014-6-5 11:57
用这玩意儿后,老是想注释屏蔽很多程序段,却没办法注释,就都改为//了。。。 ...

#if 0

#endif

erpao 发表于 2014-6-5 12:35:32

shandian 发表于 2014-6-5 12:09
能详细说说嘛?我刚才下载安装了一下,是Windows版的。
要怎样操作呢?我在菜单下看了一下,功能不多,应 ...

这个,玩10年的人不敢称专家。
搜“vim + 查找 替换”
英文搜“vim + replace + script”

界面菜单没什么用。

erpao 发表于 2014-6-5 13:20:51


才上电脑

vim命令:
將所有//开头的行删除,下面一句
:g/^\/\/ /d


将所有注释行变为/*.....*/,下面两句
:%s/\/\//\*/
:%s/\r/\*\/\r/

第一个\r或者用\n替代, 因为不同的文本回车换行不一样
\r是回车符
\n是换行

就算几万行多复杂, 瞬间完成

如果使用args 命令, 可以把整个目录的c文件里面的全部一次搞定不用一个个个打开.
LZ自行摸索吧

shandian 发表于 2014-6-5 13:26:19

erpao 发表于 2014-6-5 13:20
才上电脑

vim命令:


恩,好。非常感谢!

dr2001 发表于 2014-6-5 13:26:19

用sed。
sed -e "s_^[ \t]*//\(.*\)_/*\1*/_" source > target

写个脚本就能处理了。

erpao 发表于 2014-6-5 13:33:14

dr2001 发表于 2014-6-5 13:26
用sed。
sed -e "s_^[ \t]*//\(.*\)_/*\1*/_" source > target



一下摘录自维基百科:



sed(意为流编辑器,源自英语“stream editor”的缩写)是Unix常见的命令行程序。sed用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出。sed通常用来匹配一个或多个正则表达式的文本进行处理。

分号(;)可以用作分隔命令的指示符。尽管sed脚本固有的很多限制,一连串的sed指令加起来可以编程像 仓库番、快打砖块、甚至俄罗斯方块等电脑游戏的复杂程序。
常用的sed命令

    /模式/p- 印出所有匹配“模式”的行
    /模式/d- 删除所有匹配“模式”的行

    s- 替换字符串

      s/模式/替换文字/- 将匹配“模式”的行转换成“替换文字”

    s命令预设只替换每行匹配的第一串文字,也就是说,若每行里有多个匹配该模式的字符串,后面的将不会被s转换。在这个情况可以用g命令来替换所有匹配的文字,如下:
    s/模式/替换文字/g- 将所有匹配“模式”的字符串转换成“替换文字”

命令行选项

    -f- 按照指定的sed脚本里面的命令来进行转换
    -i- 表示将转换结果直接插入文件中(若不用-i,一般sed命令不会改变原文档里的内容,而只会输出到命令行。当然命令行输出的内容也可以用“>”转存到另外一个文件里。)
    -e- 表示在e后面的文字是正则表达式。有的版本不需要加注e选项也同样可以在命令中使用正则表达式。






Vim历史

布莱姆·米勒在80年代末购入他的Amiga计算机时,Amiga上还没有他最常用的编辑器vi。Bram从一个开源的vi复制Stevie开始,开发了Vim的1.0版本。最初的目标只是完全复制vi的功能,那个时候的Vim是Vi IMitation(模拟)的简称。1991年Vim 1.14版被"Fred Fish Disk #591"这个Amiga用的免费软体集所收录了。1992年1.22版本的Vim被移植到了UNIX和MS-DOS上。从那个时候开始,Vim的全名就变成Vi IMproved(改良)了。

在这之后,Vim加入了不计其数的新功能。做为第一个里程碑的是1994年的3.0版本加入了多视窗编辑模式(分区视窗)。从那之后,同一萤幕可以显示的Vim编辑文件数可以不止一个了。1996年发布的Vim 4.0是第一个利用GUI(图形用户界面)的版本。1998年5.0版本的Vim加入了highlight(语法高亮)功能。2001年的Vim 6.0版本加入了代码折叠、插件、多国语言支持、垂直分区视窗等功能。2006 年5月发布的Vim 7.0版更加入了拼字检查、上下文相关补全,标签页编辑等新功能。2008年8月发布的Vim 7.2,合并了Vim 7.1以来的所有修正补丁,并且加入了脚本的浮点数支持。现在最新的版本是2010年8月发布的Vim 7.3,这个版本除了包含最新修正的补丁之外,还加入了“永久撤销”、“Blowfish算法加密”、“文本隐藏”和“Lua以及Python3的接口”等新功能。
协议

目前, VIM是按照VIM许可证发布的开源软件,这个协议兼容GPL。它的协议中包含一些慈善条款,建议用户向荷兰ICCF捐款,用于帮助乌干达的艾滋病患者. VIM启动时会显示Help poor children in Uganda!的字样,在中文版本中则是请帮助乌干达的可怜孩童!.
学习曲线

对于大多数用户来说,Vim有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。为了帮助学习,Vim为初学者准备了Vim教学。通常可以在Unix系统命令行下输入"vimtutor"或者点击Windows系统桌面上的Vim教学图标进入。在Vim用户手册中更加详细的描述了Vim的基础和进阶功能。可以在Vim中输入":help user-manual"进入用户手册。手册除了原始的英文版本之外,也被志愿者翻译成了各国文字,其中包括中文。

新用户也应该学习Vim的帮助系统。可以在Vim中输入不带参数的"help"来阅读主帮助文件。
模式

从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成)或者鼠标输入。Vim和vi一样,仅仅通过键盘来在这些模式之中切换。这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。

Vim具有6种基本模式和5种派生模式。
基本模式
普通模式

在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。

Vim强大的编辑能力中很大部分是来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令"dd"删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个"d",比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,"2dd"(重复"dd"两次),和"dj"的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。

在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按"a"(append/追加)键或者"i"(insert/插入)键。
插入模式

在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。

在插入模式中,可以按ESC键回到普通模式。
可视模式

这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
选择模式

这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
命令行模式

在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
Ex模式

这和命令行模式比较相似,在使用":visual"命令离开Ex模式前,可以一次执行多条命令。
派生模式
操作符等待模式

这个派生模式指普通模式中,执行一个操作命令后Vim等待一个"动作"来完成这个命令。Vim也支持在操作符等待模式中使用"文本对象"作为动作,包括"aw"一个单词(a word)、"as"一个句子(a sentence)、"ap"一个段落(a paragraph)等等。

比如,在普通模式下"d2as"删除当前和下一个句子。在可视模式下"apU"把当前段落所有字母大写。
插入普通模式

这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim返回插入模式
插入可视模式

这个模式是在插入模式下按下ctrl-o键并且开始一个可视选择的时候开始。在可视区域选择取消的时候,Vim返回插入模式。
插入选择模式

通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域取消的时候,Vim返回插入模式。
替换模式

这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按"R"键进入。
其他
Evim (Easy Vim)

Evim(Easy Vim)是一个特殊的GUI模式用来尽量的表现的和"无模式"编辑器一样。编辑器自动进入并且停留在插入模式,用户只能通过菜单、鼠标和键盘控制键来对文本进行操作。可以在命令行下输入"evim"或者"vim -y"进入。在Windows下,通常也可以点击桌面上Evim(Easy Vim)的图标。
功能
概要

    根据设定可以和原始vi几乎兼容(例外包括Vim不支持Vi的打开模式仅支持可视模式)
    多缓冲编辑
    任意个数的分区窗口(横,竖)
    具备列表和字典功能的脚本语言
    可以在脚本中调用Lua,Perl,Ruby,Python,Tcl,MzScheme
    单词缩写功能
    动态单词补全
    多次撤销和重做
    对应400种以上文本文件的语法高亮
    C/C++,Perl,Java,Ruby,Python等40种以上语言的自动缩排
    利用ctags的标签中跳转
    崩溃后文件恢复
    光标位置和打开的缓冲状态的保存复原(session功能)
    可以对两个文件进行差分,同步功能的diff模式
    远程文件编辑
    Omni补全(上下文相关的补全)

boboo 发表于 2014-6-5 13:35:04

Wintc有这个功能

shandian 发表于 2014-6-5 13:56:28

本帖最后由 shandian 于 2014-6-5 13:58 编辑

19楼那个带界面的,最方便,也最好用。

我把所有//改为/**/后,编译还是出现大量错误。

刚才把原来备份的代码的工程文件(dep,ewd,ewp,eww)复制过来后替换后,可以通过编译了。

我的IAR更新到7.2版本过,后来退回6.7版本。7.2版本多了个C-RUN,工程文件的格式不一样了,用6.7打开被7.2版本打开过的工程后,提示工程有未知的项目,于是我就在项目工程下重新设置了工程的参数。可能7.2版本的工程文件里面还是有些项目遗留下来了(估计是和编码格式相关的内容)导致出现该问题。

qingyin2009 发表于 2014-6-5 18:14:45

wxfje 发表于 2014-6-5 12:29
#if 0

#endif

注释块颜色不一样,你这样写,颜色不变,容易搞错吧

DevLabs 发表于 2014-6-5 19:38:50

找个支持正则表达式的编辑器应该很容易.
不过正则表达式真的是天书啊.
页: [1]
查看完整版本: 有没有自动把//注释改为/**/的软件?