2009年7月19日星期日

6月底宏观经济座谈会纪要

时间 6月底. 参与人: 各研究机关的学者及券商研究部负责人.

经济形势专家座谈会发言记录
温总理:
……
房地产的购储量还是以几十栋来计算。但是呢,我觉得这次面对金融危机,全国上下信心都很强。我刚从大同回来,大同工人告诉我上次金融危机是1998年,当时大同,山西因为重化工基地,遭受危机也是最为严重的,和这次一样,这次它还是在锅底。但是当时大同工人的工资已经降到200块到300块,这次他们工资一分钱都没有少。800人的塔山矿,门口停着有300辆汽车。工人们开始原来石库对面的那些棚户区全部拆建,500万平万米的安居工程的大楼都建起来了,工人从心理高兴,因为干了一辈子煤矿,整60年,大同的历史是60年。应该算明年60年吧,今年他们也算60年了。但是就住在棚户区,没住过楼。棚户区大家知道,没上下水道,夏天下雨就漏,冬天不能避风。还有趣的就是说在棚户区看电视只能看一个陕西频道,搬到大同市里以后可以看40多个频道,所以老两口一夜没睡觉,就开着个电视当然不仅是电视,非常兴奋。我觉得我们这件事做对了。两种标准,不完全一样,我大数还是能记得,城县区中央财政拿50%,老百姓拿7.2%。从棚户区中央财政拿20%,老百姓拿40%,其他都是各级财政。所以这样5万平方米的建筑建起来了,完全是一座新城。我总觉得我对实际情况了解的还不够,因为实际情况,总比我们理论更丰富更鲜明更生动。
这是我由心和大家讲的话。并且我希望我们经济学家呢,他的研究的目的,不是为了证明自己某个观点的正确。说证明我这个观点就是正确的,这绝不是目的。他的目的是为了这个社会的进步,为了这个国际经济的持续发展,和人民的利益。
我喜欢讲道德,我认为人有道德,企业家有道德,经济学家也要有道德。其实道德最高标准就是爱,就是对人民的爱,对国家的爱。没有爱就没有道德,就没有一切。所以出于这一点,我完全相信我们经济学家也应该有着正确的世界观和方法论,就是他要了解经济的真实情况,并且为国家经济发展提出建设的意见。同时他也要经过实际的调研,不断修正自己对经济的判断,完善对经济发展规律的认识。对你们是这样,对我也是这样,这是个过程。
但是这么大的一个国家,发展极不平衡。我跟同志们讲了一下,我确实有两个没想到。就去年11月份,12月份,那时候我绝没想到一季度GDP是6.1,我绝没想到,我说的没有预料到是真的。当时香港有个著名的经济学家,说中国可能是负的,我心里也将信将疑,因为那时是直线下滑的,从6月份以后,为什么今年同比的数字不好呢,同比数字比较差,包括物价,CPI和PPI,去年都是最高点六月份,六月份以后是直线下降。所以我这个没有预料到,后来我们党和政府也都用这句话,就是经济发展超出我们的预料。这是实际,但是后来四月份出现一个小马鞍形以后,我又纠正自己一个观点,或者完善一个观点,我说应对这场危机,它的复杂程度我也没有预料到。也就是它对中国经济影响的深度,冲击的严重,我也没有预想到。因此,我们一直经过研究得出的结论,人代会刚刚开过不到四个月,我们经济企稳回升,还是不稳固的。关键在于世界经济走势不明朗,西方人谈的很多但做的不多,最主要的就是表现在我们外需持续的减少。这个走势是中国人自己改变不了的。我们管不了中国管不了世界就指这一点。这个数字可能也很快公布了,我们一至六月份进出口总额下降原来是23.8%,现在我看纠正为23.4%,大约是23到24的样子。CPI和PPI由于去年六月份是高峰值,所以今年六月份的CPI和PPI都是双下降,而且下降幅度都相当大。当然一至六月份,我光说PPI的两个数字,一个是生产指数下降7.6,一个是购进价格指数下降百分之一个5.6,一个7.2,但是当月超过11%。
我很注意经济学家的一些观点,昨天有一位经济学家在网上发表一篇文章,说我们要注意通货膨胀,但是现实的通货膨胀和预期的通货膨胀毕竟是两回事情。我琢磨琢磨他讲的有道理,因为现在物价还在下降着呢,如果说我们预见通货膨胀势必会来,这个判断你永远是正确的,那打不败这个理论的。因为它迟早是会来的,那么现在谁做这个判断都是正确的。但是不能依据这个来改变政策,我们可以做应对做准备,但不能改变政策。
我举一个很小的例子,昨天我很注意网上每个经济学家经常发表的博客论文,我吸收他们正确的东西,我有时候也对他们不够全面的一些东西,我有我自己的一些看法。我还是这句话,我希望大家畅所欲言,你们怎么研究的,怎么认识的,就讲出你们的心里话。在这个会场上,你们还是知无不言,言无不尽,言者无罪,闻者足戒。不管从哪个方面谈问题,我觉得对中央判断形势都是有益的,哪怕观点不同也没关系,因为正确的东西是在辩论中得到的。大家之间不同也没关系,因为中国太大,地区之间有不平衡,行业之间也不完全一样,所以我开场白讲的多了一点,讲了十多分钟,然后请大家讲。我们今天请的人不多,就为了请大家能多讲一点。

下面请发展中心的刘世锦同志做以发言。

刘世锦:
尊敬的温总理,国务院的各位领导:
下边关于对当前经济形势的一些看法呢做一个汇报。
先说一个基本的判断,就是持增长的有利因素在增多,七五回升的态势基本明朗,形势正朝着中央政策预期的方向发展。刚才总理也谈到年初的情况,应该说呢最近几个月还是发生了几个重要的变化。
一个呢就是政府投资的力度大,动作快,政策的执行力强。这是管理学上的一个概念,执行力还是相当强的。中央财政投资资金的到位率高,地方的投资到位率虽然偏低,但是也高于平常的年份。应该说呢政府投资是近期经济回升的主导力量。我们讲体制上的优势,应该说这段时间在这个问题上体现的相当突出。我们发展中心的同志做过一个测算,如果说没有中央一揽子刺激计划的拉动,GDP的增长率前一段时间可能只有1%左右,刚才谈到外边一些国外一些人的讲时,比如说负增长等等,应该说没有这个计划呢,可能1%左右。
第二个社会投资开始跟进,增速提高。标志性的就是房地产的投资,一二月份的时候1%左右,但是5月份呢,已经回升到了12%。其他领域的社会投资也开始回升。
第三个是消费稳定增长,15%左右,已经稳定相当长的时间了,这点呢应该说也是出乎意料的。原来估计经济增长下滑以后,居民收入会下降,收入下降后呢,会影响到需求。但是现在看呢并不明显。
第四就是出口数量下滑的幅度较大。刚才还说了一至六月份23到24。但是我们也做了研究,剔除价格因素,实物出口的下滑幅度实际上是在逐步的收缩。另外相对有意义的一点,就是在全球贸易的大幅下滑的背景之下,我国出口占主要市场和地区的份额还在上升。我们又做了个测算,一到四月份,中国占美国日本进口总额的比重比去年全年提高了2.3和5.6个百分点。一季度,我国占欧盟的市场份额也比去年提高了1.9个百分点。感觉到份额上升的事还是很有意义的,实际上说明了我们还是很有竞争力的。
以上四个方面的变化,前三个属于内需,后一个属于外需,应该说大多数变化要好于预期。现在观察经济形势当然我们要看统计数据,但是更重要的还是要看数据背后的支撑的和驱动的力量。这些力量是那些力量,它是不是可以持续。所以从这个角度,我们可以给出一个判断,就是支持经济七五回升的动力基础初步形成。当然这个基础现在还不稳固,还相当薄弱,比如说大规模的政府投资,不可能长期实施,越往后空间越小。社会实体投资刚开始回升,信心还不稳定,也不排除出现反复。消费增长刚才讲应该说相当的不错,但是政策支持的因素还是有的。特别是国际经济的衰退尚未降低,还有可能对我国的出口形成大幅度的冲击。
目前的问题感觉两个方面,一方面是充分保持初步形成尚不稳固的回升势头,是支持回升的积极因素继续增多和加强,这些因素还不够多。另外一个方面,就是对近期显现的资产价格过快上升,通胀预期加强的问题要有足够的关注。刚才总理也谈到这个问题,说一点想法,最近社会上对资产价格上升和通胀预期加强的议论应该说相当多,主要是和上半年信贷的投放规模有关。最新的数据还没有公布,应该是一到五月份是1.85万亿,六月份可能要更多一点。客观的说,如果只有增加投资支出的财政政策,没有适度宽松的货币政策相配合,目前期末回升的态势是不大可能出现的。我们现在实际上是积极地财政政策和适度宽松的货币政策有一个很好的配合。
贷款的大量出现对目前局面的目前起很大的作用。特定情况下针对主要问题采取特定政策是完全必要的。任何政策都是有利有弊的,要放到特定环境下权衡利弊。但是就这个方面,现在已经出现一些苗头的和潜在的问题也应该有一些前瞻性的评估和对策考虑。
一个是目前实体经济领域的投资信息尚在恢复之中。股市房市资产价格的快速上升,具有更强的诱惑力。部分资金会以各种方式进入股市和房市,这个问题最近也有些人有些测算,这个数字也不一样,但是看来这个问题还是存在的。助推资产价格从而分流资金,直接影响到对实体经济的支持。
第二点就是资产价格上升和通胀预期实际上是相互影响相互强化的。北京呢最近我们也是和一些人有一些的接触,他们现在就预期到将来可能会出现通胀,实际上现在还只是一个预期,一些人呢就说买房时作为保值和对付通胀的一个手段,但是他买了房之后就会推高房价,而房价会带动地价,房价地价上升经过一段时间确实会成为推动物价上升的一个因素。所以这两个因素是相互影响的。
三是一旦出现较大幅度的通胀,治理难度不容低估。当然现在也有一个观点,货币政策时能随机调整的,如果通胀压力加大,到时候可以收紧货币,当然这个观点应该说是有道理的,也是有操作的空间。但是对这个政策的有效性和局限性也是应该有认识。因为通过现在这个阶段出现的通胀,我们主要不是需求拉动型的而是要素成本推动型的。要素成本推动型的这个物价上涨有个特点,就是上去容易下来难。你想这个地价上去之后呢落下来是比较难的,因为北京最近又出现了几个"地王",地拍出去价格再往下压是比较难的。另外像劳动者的福利劳动支出等等,这些东西都是经济学上有固定说法的,所谓的刚性,它都很难再下来,就是要素成本有这么一个特点。
另外从国际上来看呢,现在大家也基本上有共识了就是危机期间大量的美元注入,一旦全球经济复苏,特别是发展中国家经济恢复增长,大部分商品价格大幅上涨难以避免。我们现在能源原材料对外依存度可以说持续提高,所以说输入型通胀的压力也会比较大。
应该说现在这个问题最近一段时间已经有一点苗头了。所以当前需要关注并着手考虑的有两个问题,一个是抑制资产价格的过快上升,第二个是注重对通胀预期的管理。我很同意刚才总理讲的一些观点,就是目前我们讲的通胀的问题实际上还是未来某时候的问题,它不是马上要面对的问题。至少在今年之内我们可以判断通胀还不会成为严重的现实的问题。但是说这个问题现在也有一些不同的看法,国际上呢我参加了一个会议,也有人有这样一个观点,就是说这次应对国际金融危机中间,全球的各大央行面对通缩压力,成功的制造了一个通胀的预期。就是在通缩的问题已经出现的时候呢制造了一个通胀预期,刚好有一个抵消,所以说对抑制通缩问题起了一个好的作用,所以说他认为这个政策是成功的,也有这种说法。但是从目前我国的情况来看,我们也做了一些分析,原来估计到一十月十二月份,CPI会有负转正,就是越过零点,PPI要晚上那么几个月。当然我们假设通胀预期形成了并且强化,因为我们有一个预测,物价上涨或者说有一点通胀压力是在明年下半年。而现在也和可能会提前,比如说提前那么几个月。所以说现在我们面临着一个通胀预期管理的问题,就是现在我们不是直接对付通胀而是通胀预期的问题。
我认为有必要适当的释放一些政策信号,适当的相信未来即使出现物价上升也是温和的可控的,是与经济增长相适应的。那么经过以上的推论,我们认为未来的经济增长有三种可能的前景,一种就是社会投资持续回升的力度还不够,或者出现比较大的外部冲击,经济增长出现反复,或者维持在一个比较低的水平上。有增长但是水平相当低。第二种情景就是社会投资力度持续的增强,在下半年逐步替代政府投资成为一个主导型的或者主体性的力量,经济增长能够保持在8%以上的这样一个水平,物价逐步回到正增长,但处于温和和可控的状态。这是一个比较理想的状况。第三个前景就是经济增长维持在中低水平,回升动力还不够强劲,同时资产价格过快上升,因为最近股市形势一片大好,3000点已经过了,3100点都已经过了,有人能往高看了。
通胀预期呢持续加强,真实的通胀压力也逐步加大,那么经济可能会进入一种增长力可能有一点但是不是太高,但是资产价格已经相当高,通胀压力在逐步加强,这样一种(温总理:我插一句,股市从900点到6000点都是在我做总理的期间,我都经过了,苦辣酸甜。最低的时候上下一片骂声,高了也是上下一片骂声。后来我自己有一套应对这个的思路,因为我在处理这个问题上是有经验和教训的。900点也经过,6000点也经过,我插一句。)就是出现一种有一种词我们叫"滞涨",通胀和经济低速增长是同时并存,当然中国呢跟国外实际上是不一样的,但是可能有类似的一些特点。就是一旦出现这种局面,政策的回旋余地可能比较小,因为那个时候松还是紧都会遇到两难,松一点可能通胀的问题,紧一点增长的问题。
现在看来刚才讲的三种可能性只是一种预期,第一种可能性正在减小,但是不能完全排除,就是增长二次探底或者反复。第三种可能性现在还不是现实,只是我们估计到明年可能有这种可能性,但是这种可能性是在增加的。我们应该争取的是第二种可能性,避免其他两种特别是第三种前景。
(温总理:我补充一句,经济学家多从金融的现象上看,其实我经常关注的还是生活用品,当然房地产地价也是很重要,但生活用品特别是食品,在中国还是起很大的影响,现在即使小了,比重也是接近50%左右。说夏粮丰收,增加四十亿斤,如果你再仔细去看一百六十亿斤的芽麦,就是发芽的小麦,在一百六十亿斤,也就是发芽率超过20%,这部分麦子,恐怕只能低价收购,也就是七毛钱左右,不能食用。东北的稻谷状况,由于前一段的气候条件不好,特别是黑龙江,涨势并不良好。所以昨天发改委向我请示说,现在是不是可以粮食加工业要放开一些,我就写了一段很慎重的话,我说粮食现在国内价格是高于国际价格,是从来没有过的。出口的话不合算,即要用出口退税来补贴,降低关税来补贴,出口不合算。加工,搞乙醇搞什么加工什么什么多。我更担心的就是今年的,特别是大米,大米不可掉以轻心。今天发改委不知道有没有人坐在这里,大米不可掉以轻心。中国粮食出问题首先是在大米上,小麦还好,一点小事啊,连点盐巴都可以造成抢购,这个国家还是这个水平啊。一个食盐都可以造成抢购,不是一个省,波及五六个省,我们还是这个阶段。这是我对中国的认识。)
所以从以上这些考虑,下一步的政策有这么些想法,继续抓紧落实中央国务院保增长、调结构、扩内需、重民生、促改革的一揽子计划不动摇。继续保持积极地财政政策和适度宽松的货币政策的连续性,可持续性。这一点还必须很明确,因为国际上现在也在讨论宽松的政策是不是要退出的问题。
(温总理:实际上两种观点,不是说中国是说他们自己,一派是叫退出政策,退出机制或者叫。一派是以克鲁格曼为主的,千万不能退出,退出就要前功尽弃。这世界上也是两种观点。)
应该说呢在这个问题上,态度要明确还要坚定,同时呢根据新情况新问题增加政策的灵活性,重视通胀预期的管理。为今后必要的政策调整预留空间,适当调整政策的重点,就是在这样一个大的前提下,着重强调这样四个着力:着力支持实体经济的恢复和增长,防止资金分流助推资产价格过快上升。着力支持社会投资的恢复和增长,使之逐步成为投资的主体部分。着力扩大居民消费,为经济中长期较快平稳发展扩展空间。着力推进相关重要领域的体制改革和创新,为发展方式转变和结构调整创造体制条件。
关于扩大居民消费这件事现在讨论的比较多,感到潜力比较大也有条件去做的是这样两件事情,一个是加强社保体系建设,这个方面最近中央也有一些安排。感觉最重要的还是需要建立一个全国性的统一的制度,是解决一个可流动可接续和预期的问题,同时对目前各种复杂的制度安排有比较大的包容性。在资金安排上,除了国有股上市融资的10%划转社保基金外,还可以考虑对国企的部分利益和股权能不能划转。当然这是一个设想,因为这样做的好处是直接降低企业的储蓄率,改善收入分配结构。因为我们现在讲社会收入分配结构不合理是储蓄率比较高,主要是企业的储蓄率比较高。另一件事情是加快进城农民工的转型,他们不仅是打工者,同时要解决在城民工的住房、教育、医疗、卫生、社保和户籍等等问题。这个问题也是个老问题,经常地谈,这次危机中间表现得也比较突出。东莞的农民工没工作了就直接回四川,就是有人说现在农民工进城是一个落借,就是进去之后呢就是在那打工,然后没工作之后呢,就是他和城市就没有太大的关系了。所以不仅是一个身份的问题,是一个全面的转型,社保、住房、医疗、教育、卫生等等实际上是一个很大的内需的空间。这个方面应该鼓励各个地方根据各自的情况进行一些探索和试探。那么关于改革的问题呢,目前需要重视经济调整期的有利时机,因为目前这个时期,价格水平比较低,经济关系绷得不是很紧,体制和结构上的调整大家容易接受,改革共识较多,所以确实有一个不失时机的问题。
建议今后一段时间可以重点推动三个领域的改革,一个就是上面提到的社保体系改革,第二就是加快部分仍然没有放开或者理顺的能源资源价格。比如很长一段时间一直没有解决的煤电价格的关系等等。第三就是对那些有较大增长潜力的领域,特别是基础设施和生产性服务业领域,要进一步放宽准入,鼓励竞争。因为中国改革开放以来一个重要的经验,就是通过改革打破有增长潜力行业需求和供给上的体制约束,使内在的潜力释放出来,从而推动经济快速的增长。98年亚洲金融危机以后,特别新世纪以后,中国持续的经济增长有两个增长点,一个是住房一个是汽车。住房是因为我们搞了住房体制的改革,汽车是加入WTO以后,这个行业的开放和竞争加强了。所以说这一条经验对目前的不少行业还是有效的。最后提一个建议,这次应对危机中间出台的产业调整和振兴规划,社会上反应是积极的,也开始收到成效。
危机过后,从中长期看,我国的产业发展将受到两个基本的约束,一个是要素成本的持续上升,低成本的优势还会有,但是会逐步下降。第二就是在原有水平上,数量规模扩张的空间在逐步的缩小。这就要求我们在保持并尽可能延长我国产业中低端优势的基础之上,重视培育和提升中高端的竞争。因为从国际经验来看,行业、产业包括企业,只有中高端的竞争力才是持久的竞争力。因为中低端的竞争力也可以维持很长时间,但是有些情况发生变化以后,有些可能不可持续。但是从一个国家来讲,不可能所有的产业,只能是一部分行业,可能具备这样的能力。所以建议在落实产业调整振兴规划的基础上,认真研究,排队分析我国产业已有的和将来会有的这样的优势,立足长远,制定一个提升我国产业中高端竞争力的规划。比如说一个产业制高点计划等等,类似这种东西,并且在十二五规划和其他规划中得以体现。
我的意见完了。


下面请许宪春同志,统计局副局长。
许宪春:

尊敬的温总理和各位领导,我就当前的我国经济增长和变化趋势做一点汇报。谈三个方面情况,第一个方面关于当前我国的经济增长,第二个方面关于下半年我国经济的变化趋势,第三点是关于保持我国经济平稳回升的几点建议。
首先是第一个方面,从改革开放以来我国经济增长的周期性变化开始。这个图我们可以比较清楚的看到,改革开放以来,我国的经济增长明显的表现为三个周期,第一个周期是81年到90年,第二个周期是从90年到99年,第三个周期是从99年到09年。那么第一个周期是从81年5.2%的谷值开始,三年之后到达84年15.2%的增长。然后经过6年在波动中回落,90年变成3.8%的增长。第二个周期从90年的3.8%开始,到92年峰值14.2%的增长,然后在7年之后到了99年的时候降到7.6%。然后从99年到07年一共是8年时间,逐步达到一个新的峰值是13%。从07年开始两年时间,应该是快速回落,这样一个情况。所以说这三个周期各有特点,第一个周期,概括为陡起抖落,因为三年就达到峰值,然后六年在波动中回落。第二个周期是陡起平落,第三个是平起抖落。其中的两个主要的影响因素起着作用,经济周期以及金融危机。但是根据发展的趋势,我国经济07年也是到达了周期回落的时期。因为我们有连续五年的两位数高速增长,从世界的记录,只有日本和亚洲四小龙的新加坡和香港有过这样的五年两位数高速增长的先例,但是无一例外,都在五年后开始回落。所以说我们在高速增长后回落是正常的,但是如此之快,如此之猛,主要是受到了金融危机的影响。
这个是记录数据:特点如下,左边的最高值92年的四季度,经济增长是16.5的增长,然后是连续的6个季度的回落,到94年2季度,回落到12%,回落了4.5百分点,平均每个季度回落了0.75个百分点;在波动中回落,到99年回落到6.6,从峰值到谷值期间回落9.9个百分点。在99年后是波动中上升,07年2季度达到17.8的增长峰值,而后7个季度的连续回落,一直到到今年的一季度是6.1的增长,七个季度回落了7.7个百分点,平均每季度回落1.1。这段时间的特点是:在建立季度核算后,持续的回落时间最长;持续回落幅度也是最大;三是在单季,去年的三、四季度从9%回落到6.8%,降低幅度2.2百分点,从第一个季度的6.1,又是建立季度核算以来的最低值。所以这充分体现出国际金融危机对中国经济的影响。
如果没实施积极地财政政策,或者较快发展的计划,活跃的幅度将大得多。
第二个方面,我国的经济增长已经触底回升。在促进经济平稳发展的一揽子计划下,我国经济已经触底回升。
主要从两个方面判断:一个是从生产的角度,另一个从需求的角度。生产的角度首先看工业,是在波动中回升。图中大家比较清楚,这个红线,一到二月份3.8,三月份8.3,四月份7.3,五月份8.9,是在波动中回升。从月度是波动回升,从季度上看,二季度应该明显的高于一季度。
建筑业增加值的增幅和建筑安装工程投资的增幅,应该保持相同的趋势,尽管量不一定一样,但趋势应该相同。建筑业安装工程投资是快速增长的,1-5月份增长了35.2%,说明建筑业在加快增长。
批发零售业,我们用县级以上的营业额来判断,最近几个月在加快增长。住宿餐饮业,用它的营业额来判断,最近两个月,就是4月5月也在回升。
房地产业有好几个行业组成,其中的商品房的销售市场对房地产业的影响是最大的。由于它的敏感性强,波动性也比较强,它的发展趋势基本上决定了房地产业的发展趋势。从图中可以看出商品房销售面积增长是增幅非常快的,一到五月份已经增长25.5%,这样一个幅度,所以这说明房地产在加快增长。
还有金融业。两个指标对他有影响:一是存贷款的余额,它是在增长。
(温总理:房地产业是两快一慢,一个是价格回升比较快,一个是销售面积增加比较快,甚至是120%,特别是深圳和上海。慢:投资比较慢,但是最近是有所回升的。这两快一慢因素非常复杂。也可能有消化原有房地产积压库存的因素,也有预计将来房地产通胀,房地产价格将来要涨上去,现在不是为了住房,而是为了储蓄,甚至为了投机,这种情况肯定会有。但是房地产的建设速度最近开始回升,是我们需要关注的。如果是突然地大幅增长,也会出现问题,当然现在比前两者幅度还是要小的。一个是卖的价格高,长得快,一个是销售量的增长的快。我不知是不是这个情况。)
金融业从存贷款余额和股票成交额的增长的趋势看,应该说这个行业还在加快增长,这是从生产的角度。这些行业,占整个GDP的70%以上,所以他们的趋势大体上可以决定整个GDP生产的趋势。所以从生产的角度看,二季度应该是明显的高于一季度。
再从需求的角度看,全面的反映需求情况的就是支出法GDP。包括三大需求:消费需求,投资需求,以及进出口需求。支出法GDP核算有自己的术语,消费需求叫最终消费,包括居民消费、政府消费。投资需求叫资本形成总额,包括固定资本形成总额和存货增加。进出口需求是货物和服务的净出口,也就是出口和进口的差额。这个术语都是用国际标准的术语,就是叫93年SNA,联合国的国民账户体系。我们国家还没有正式建立季度支出法GDP的核算,我们有年度的核算,但是还没有正式建立季度核算。所以在季度和月度的需求分析中,往往用一些替代指标。在我们统计局的研究中发现,这些替代指标用起来要小心。因为和支出法中的需求相比,在内涵上和数据表现都有比较大的区别。
首先是社会消费品零售额,它往往是替代居民消费,但是它和居民消费有若干方面的区别。比如说零售额,除了居民消费之外,还有有机关、企业、事业单位的消费,后者不构成居民消费。零售额也包括对城乡居民建房用的建材,居民建房属于投资,购买的建材是投资的构成部分,所以它不属于居民消费。还有零售额也不包括服务消费,所以用零售额来替代居民消费的时候要小心。比如说一季度,零售额增长15.2%(名义增长),实际增长是15.9%,但是居民消费大概只有7、8%左右的增长。我们认为,如果在季度替代居民消费的指标,两个指标可能比较好,一个是农村居民人均生活现金支出,一个是城镇居民人均消费支出。这两个指标从数据表现上和内涵上和居民消费比较接近。政府消费,替代指标往往是财政支出,但是财政支出和政府消费也有比较明显的区别。财政支出一个是包括投资性支出,第二个是包括转移性支出,第三是经常性业务支出。只有经常性业务支出部分才是衡量政府提供服务的价值,所以,要想测算政府消费,是财政支出中的业务支出部分。特别是一季度,财政支出34.8%的增长,有人判断政府消费大幅增长,但是其中投资增长比较大(因为一揽子计划政府投资支出比较多,还有社会保障支出比较多),针对行政业务部分的支出只有7%左右,所以政府消费和财政支出也有比较大的区别。
固定资本形成总额和全社会固定资产投资也有区别。其中比较明显的就是土地购置费用,它包括于全社会固定资产投资中,在固定资本形成总额中是不包括的。因为在GDP核算中有一个重要的原则,即生产的原则,不是当期生产活动创造的价值是不应该计入生产法和支出法的GDP中的,所以这个要做调整。但是,全社会固定资产投资,甚至是城镇固定资产投资的趋势和固定资本形成总额的趋势往往还是表现出一致性。所以这还是有一定的替代性。那么存货增加目前往往还没有替代指标,所以很多判断往往没有考虑存货增加。但是从一季度看,它对需求的影响非常大,一季度它对GDP向下拉动4个百分点,直接影响到需求的增长率。
货物和服务的净出口的替代指标是海关统计的贸易差额,但是两者也有很多区别,甚至会趋势相反。尤其是今年一季度,贸易差额是正的53.6%的增长。一个区别是贸易差额是用美元统计的,不包括服务部分。这就是一个进出口之间的价格变动趋势不同。这些因素导致货物和服务的净出口的变动和贸易差额的变动有时是趋势相反的。今年一季度,贸易差额是正的53.6%的增长,但是进出口需求是大幅度的负增长,对GDP是负的拉动。因此我们有时在判断时对此比较关注。
从二季度来看,居民消费是增速加快的。因为从目前掌握的资料看,农村居民人均生活消费支出增速明显加快,城镇人均消费支出增速略有回落。所以两者相抵说明居民消费的增速在加快。政府消费增速有所回落,因为财政支出增速明显回落,一季度是34.8%的增长,二季度已经明显回落。其中经常性业务支出回落的幅度有限。所以我们判断政府消费增速可能是有所回落,或者是略有回落。整个的最终消费,包括居民消费和政府消费,其增幅大体上和一季度持平,这是消费需求。
投资需求上,在图中看到增幅比较快,如果用城镇固定资产投资增长率来替代的话,1-5月份已经是32.9%的增长,增幅较快,说明固定资产投资需求是加快增长的。有一个重要指标是存货增加,值得关注。09年一季度,规模以上工业成品的存货是负的2020亿元,和去年一季度(638亿元)比大幅度下降。因此它对一季度GDP向下拉动4个百分点。二季度出现了回补现象,估算大概是1450亿,正好去年二季度是库存的峰值,历史最高值。虽然今年二季度已经是由负转正,但是和去年二季度峰值相比降幅大概有四成。所以它对GDP还是向下拉动,但向下拉动的幅度已经减小,明显减弱。
从进出口需求来看,一季度贸易出口是负19.7%,贸易进口是负30.9%,顺差是53.6%。从4、5月份来看,贸易出口降幅实际在增大,贸易进口降幅在收缩,这导致很可能二季度贸易顺差已经是负增长,而且幅度比较大。因为一季度是正的53.6%,二季度很可能是一个比较大的负数。这样来判断,进出口这一方面对GDP的负拉动的作用在加大。从汇率角度看,今年和去年同期相比人民币还是在升值的。服务贸易的逆差状况的作用还是和一季度相同的。还有价格,进口价格降幅明显高于出口价格,这种格局没有改变。所以判断货物和服务的净出口对GDP的拉动在加大。
综合起来从需求角度看,与一季度相比,二季度最终消费基本持平,固定资本形成总额加快增长,存货增加额回升,货物和服务净出口降幅进一步扩大。存货增加额的回升使得它对GDP的负拉动作用明显减弱。而净出口降幅扩大对GDP的负拉动作用进一步加大。根据一季度的情况,存货增加额的回升对GDP的正面影响会超过货物和服务净出口降幅扩大的负面影响。所以从需求角度讲二季度的经济增长率会超过一季度,经济运行呈回升的态势。以上是从生产和需求两个角度来讲的,都判断出二季度在回升。
下半年的趋势,我认为我国经济有望会继续保持回升,有几点理由:
第一是内需的工业增长的拉动作用在增强。这个图可以看到外需对工业增长的负的拉动没有减弱,但是工业增长在上升,主要是内需的拉动作用在增强,弥补外需下降的作用。库存回补有助于工业生产回升。我们可以看到,去年三季度比二季度回落,到四季度是负的。我们判断今年三季度很可能和去年三季度大体上持平,即对GDP零拉动。四季度去年是负的,今年很可能是正的,这样就可能形成比较大的正数,对工业起正的拉动作用,向上拉动,即库存的回补有助于工业的回升。第三个理由是新开通项目计划总投资的高速增长,它预示着未来固定资产投资将保持较快增长。去年计划总投资都是在低速增长,或是负增长,今年是以非常高的幅度在增长,这最主要是由于刺激经济增长的一揽子计划的原因,这预示着投资将来会保持较快增长。还有就是从商品房市场回暖的情况,去年商品房消费面积是一直是负增长,而且幅度逐步增大,今年先是由负转正,然后又加快增长。商品房市场的回暖一方面会拉动房地产投资(现在已有这个趋势),另一方面,由于房地产的链条长,影响面宽,可能会拉动相关产业的增长。还有一个因素是去年四月份的基数比较低,有利于经济增长率的回升。我们还有一些回升的基础还不稳固的方面,比如说外需不足,企业利润仍处于负增长,财政收入虽然转入正增长,但是增幅较低等等。
最后是保持经济平稳回升的几点建议:
一是为了避免加剧经济结构的不合理性,要保持经济平稳回升。现在如果经济过快增长的话,很可能是过度依赖于投资,加剧结构的不合理。因为消费需求比较平稳,外需现在很难做主,所以过度依赖投资会加剧结构不合理。
二是为了保持价格总水平的基本稳定,要努力实现经济的平稳回升。有几点理由:一是在图中可以看到,除了我们的经济增长是周期性变化的之外,我们的价格增长也是周期性变化的,也明显的表现为三个周期,有比较突出的特点。第一轮经济增长率在84年达到峰值,通胀率在88年达到峰值;第二轮经济增长率在92年达到峰值,通胀率在94年达到峰值;第三轮经济增长率在07年达到峰值,通胀率在08年达到峰值。经济回落时,通货膨胀和经济增长同时会落到谷底。因此,经济增长率上升时往往拉动通货膨胀率的上升,经济增长率回落往往带动通货膨胀率回落。经济快速上升往往拉动价格总水平快速上涨,且峰值较高;经济平稳回升价格总水平也上升的比较缓慢,且峰值较低。前两个周期明显表现出。88年价格增长峰值达到18.8%,94年价格增长峰值达到24%,前两个的经济增长都是短期内经济增长快速拉起,所以价格快速拉起。而第三个周期经济增长平稳回升,所以价格也是平稳回升,且峰值比较低。根据以上分析,为了保持价格总水平的基本稳定,要努力实现经济平稳回升避免经济在短期内迅速拉起。
最后是关于要努力提高经济增长质量,特别是技术含量、产品质量、投入产出率、能源利用率等等,使得经济增长质量比较高。


下面请樊纲同志。
樊纲:

首先讲一讲关于世界经济形势的判断。就金融危机而言可以说这样几句话。
第一,现在可能已经成功的避免了大萧条,这可以说是人类的进步,有世界历史上最大的金融危机,但仍能成功避免大萧条。
第二,复苏的道路还很长,我个人不同意市场上包括西方一些学者的一些比较乐观的估计,比如四季度美国的经济可以复苏。明年也许美国经济正增长,但仍然会是零增长,一增长。加上欧洲和日本,三大经济体至少两年的平均零增长或负增长是可以预期的,因为现在大规模解雇等问题仍然在发生,美国的失业率明年一季度预计会达到11%,能不能打住还不一定。尽管失业率的增长在下降,但是(失业)仍然在增长。美国的振兴计划,根据最新得到的消息,他们的财政计划基本上是漏出,没有政府的执行能力去通过公共支出拉动需求,只能注入到经济之中由各家各户或一些企业来支出这些东西。很多坏账还没有清理,居民部门的负债率仍然非常高,因此要想很快复苏是很难的。开玩笑的说,美国政府现在最多就能修点公路,连铁路的公共投资都要构想计划,一说政府要支出了,过会马上会有很多阻碍。
第三,我们的国际市场现在面临着一次性大调整,这一点我觉得应该高度重视。我们前三年、前四年面对的国际市场是金融危机顶峰时刻,金融泡沫最大时的金融市场,带动了大量的需求。而现在杠杆率突然萎缩,金融泡沫消失之后,尽管现在还在危机期,人们现在都不买东西的这种情况下,但是从长期看,由于杠杆率消失了(大量萎缩),国际市场需求再恢复到危机前的水平那是一个漫长漫长的过程。就像一个台阶一样,现在突然掉下来。全世界进出口整个市场今年掉百分之十几,一般估计是15%,两三年的期间不见得能恢复多少,即使恢复了,也不能马上恢复到危机前的水平,还要回到一个比较低的台阶重新增长。这是我们现在要面对的问题,就是我们现在的出口不景气、出口的下滑在一定程度上是世界经济结构性的调整,且不取决于我们的做法。过去面对出口的生产能力恐怕这次面对的是一次性调整,我们要考虑这个问题(后面还会讨论外汇等其它问题)。

温总理:这个问题我们考虑了,就是今年的进出口总额,我认为,下降的幅度绝不会低于20%。就在20-25这个区间,特别是出口。这个思想准备不仅今年,甚至包括明年。
樊纲:结构调整它是一个长期的。
温总理:而这部分外需的减少考内需的拉动短期内难以填补,你看上半年我们才大约9700亿进出口总额,去年全年两万五(亿)嘛。今年能达到两万,撑死了。我们所有的措施,能想到的都已经想到了而且都出台了,但是还是举步维艰。
樊纲:对于外贸部门来讲呢,这是一个客观现实,而且不取决于我们的客观现实。这不是我们的责任,而是世界的一次结构性变化。而且现在说是美国将来也要结构性调整,美国将来消费率会提高,储蓄率下降,现在也还没有发生。居民的储蓄率是上升了,但是政府的消费率在提高,因为大规模的赤字。
温总理:再加上贸易壁垒比任何时期都严重。
樊纲:大萧条是避免了,但是两三年的低迷我们还是要有思想准备。

关于国内的经济形势。
第一,我们成功的用宏观经济调控政策避免了更大的衰退和更大的波动。我们整个的政策,包括货币政策、财政政策和其他的一些宏观调控政策,我觉得是及时、有效、而且是必要的,现在看来也是成功的,可持续的。现在国际国内有很多说法,说宏观政策后面会有后遗症等副作用,这就是刚才总理说的权衡利弊的问题。我们的机会成本是大衰退,我们成功的用这点代价,甚至是一些副作用避免了大的下滑而且稳定住经济能够现在开始重新恢复增长,开始复苏,即使有点代价也是应该的。
第二,这是可持续的。理由是,第一,现在确实是存货开始消化,刚才徐宪春讲过。一些部门的过剩生产能力预计在今年下半年开始减少到企业能够开始回复投资的程度。现在企业投资显然还比较低迷,而且不可能有很高的企业投资。加上房地产,现在有比较强劲的恢复势头,这样到了明年,即使政府政策的力度有所下降,这两块需求还能支撑一大块经济增长。相信到明年,出口的形势也会略有好转,特别对中国的出口产品来讲。因为前一段大家都不买东西,但一旦买东西的时候,价格优势就会起作用。我们中国的出口也还会有所增长。

温总理:所以我们现在的方针是千方百计既以内需为主,有稳定外需,外需主要是保市场、保份额。
樊纲:该用的外需政策差不多我们也都用了。
温总理:都用了。
樊纲:再用就是扭曲了。
温总理:价格要扭曲了。
樊纲:现在应该就差不多了。

这是第二点。
第三点呢,我个人同意,现在不能撤火,现在宏观政策不能退出。这么大的一个波动,至少两年的支撑是必要的,特别是财政政策。明年即使有了企业投资的一定程度的恢复,房地产投资一定程度的恢复。另外今年特别低也是有原因,因为去年新的楼盘开盘,投资建房活动基本都完了,现在刚刚开始在恢复,明年能恢复起来,即使有这样的恢复,国际市场也略有恢复,但是需求仍然是比较弱的。今年的政府支出支撑了3个百分点的增长,按照这个力度(力度也是够的,是正确的政策),明年我们至少现在要准备继续保持一个百分点的支撑力度,从财政赤字的角度,今年是3,明年就是基数了,也许明年财政赤字需要占GDP的4个百分点。当然这要看今年下半年的形势变化,但是我觉得这个思想准备是应该有的。根据目前形势判断,至少明年不应该是负的支撑。如果撤火撤到2%、1%,如果是负的支撑的,可能真的W型啊什么的会真的落下来。我觉得还是要保持一定的支撑,后年再逐步考虑退出的过程。包括适度宽松的货币政策也仍然要保持,也许力度要发生变化。
这是国内的情况,总之,是可持续的,但其中包括一个条件是政府仍然要保持一定的政策支撑。这是第二个大问题。
第三个大问题就是现在比较多的流动性、通货膨胀与其等等问题,我也讲一点自己的看法。第一、货币流动性毕竟是一切价格上涨的基本的条件,所以这还是要作为一个基本的大背景来思考。但在现在的情况下,我们确实要思考广义通货膨胀这样一个概念,现在想想我们未来这几年的通胀情况,产成品、工业品要想通胀是越来越难,价格向上涨越来越难。这次危机,发达国家都要回归实业了,从事制造业了,发展中国家都在新兴市场。现在生产能力、技术进步,工业品制造品本身要想价格上涨,这和我们88年和90年代初都不一样了,要想价格上涨很难。一切和资源相关的、和土地相关的东西价格会上涨,随着人类生产力的提高,它本身相对价格就会提高。同时在世界原材料的技术发生突破之前,恐怕所有的原材料按照现在的技术,人类的整个需求的增长,特别是发展中国家的增长,这个供求关系会导致一切资源价格的上涨。石油价格前几年是期货市场上投机家们在炒作,供给能力不够,高油价刚刚开始就危机就把它他乱了,现在很可能回过头来又炒同样的因素,因为供给能力没有什么扩大,因此油价可能还继续上涨,包括一些其他的资源价格仍然上涨。这些价格的上涨就表现为成本推动型的通货膨胀,它大概也是未来CPI通货膨胀的主要原因。其中一个重要的因素就是食品价格。我非常同意刚才总理说的这样一个人口大国,食品价格至关重要,而这也是和自然资源及与土地相关的一个因素。再一类就是房地产价格,它与土地相关,它是对GDP的相对价格并会受到金融、货币的影响。在一类就是股票等金融资产,这些受货币的影响更大一点。把这些因素都考虑进去,我也非常赞同总理的观点,治理通货膨涨、管理通货膨胀预期的角度,我们也不能单纯看货币因素。比如关于粮食,土地的保障、农业的投入等等,关于房地产,也不能光看货币的因素,我们房地产有供求关系的因素,怎么抑制、管理需求,包括现在的物业税的一些根本的制度性的政策,要加紧改革、加紧出台来管理需求,同时要管理供给。现在一方面有投资慢的因素,另外,在各个地区在土地供给问题上有一些刺激投资需求上涨的一些因素。我个人也不赞同放土地,因为18亿亩的粮食都非常重要,我的建议是提高容积率,特别是大城市的容积率问题。我们就这么多土地,人际关系非常紧张,付不起非常奢侈的居住环境,要提高容积率,提高住房的供给。在这个问题上,中央也应该有政策,调节各地方。各地方有时为了卖高价,有土地也不供给,压低土地密度。在这方面也需要有制度的保障和政策的调节,调节住房的供求关系。
从金融资产的角度、从房地产的角度、从货币大背景的角度,我觉得现在我们应当继续坚持适度宽松的货币政策,但是在货币供给的力度上应当根据情况的变化而适当的有所调整、有所调节。现在M2的增长速度是25%以上,应该说是比较高的。现在贷款的增长速度等等、房地产等投资势头很猛都和这个因素有关系。如何在下半年降低这个增长速度,能够到年底降到20%左右(仍然是宽松的)。但是这样为今后管理通货膨胀,包括现在开始管理通货膨胀预期,防止金融泡沫、防止财产泡沫、防止通货膨胀未来的走势我觉得是必要的。现在我觉的在公开市场操作、发行央票等等还是有一些操作余地的。我认为也应该给市场一些信号,就是说我们适度宽松货币政策的宽松力度也是可以根据情况的变化而不断调整的。当然我们也面临着和国际一样的货币回收问题,但我认为力度调整问题现在是可以做的。往前看几个季度,甚至看两年,我觉得进行适当调整已经是有必要的了,这是第三个大问题。
第四个大问题我想讲讲外汇和外资的管理问题。尽管现在我们的外贸顺差在下降,但是明年,特别是过了一季度以后,我们的基数变化以后,国际市场再略有复苏,我们的出口又开始增长,在世界不景气的情况下,贸易保护主义的压力就会大大提高,美国国会又会来和我们闹,这是一个。另外从贸易摩擦角度,刚才世锦讲了,尽管贸易在下降,我们在各个国家的出口比重在上升,贸易地位仍然在改变,这是第一。第二,如果世界经济两三年仍然不是很景气,而中国的复苏已经实现,外资进一步投入中国的趋势会进一步加强。在可以预见的将来,在明年,甚至今年下半年,我们的国际收支盈余问题又会突出出来,因此现在做好预案来管理这件事情是非常必要的。在这儿,第一我们应该准备使得我们的实际的外汇实际汇率重新开始小步升值,至少保持这个灵活性。我个人一直反对大幅升值,但客观上说中国现在处在升值的阶段,我们的劳动生产率增长比发达国家快,我们的通胀前几年都比发达国际低。而且美元会进一步贬值,它的贬值会加大我们的升值压力。如果我们长期脱离升值的趋势,又会出现05年那种情况,就是说有些问题会积累,形成过大的压力,市场的投机也会过大。怎么及时的进行调整,我是想现在至少有个思想准备或预案。同时要趁着现在的情况,加大外汇管理体制的改革。进一步放宽居民和企业持有外汇和用外汇购买外国资产的渠道,包括现在可以扩大一些其他国家的债权在中国的发行。建立像QDII这样的渠道使一些老百姓在中国买金融资产,做到在下一轮外资进入高峰出现的时候,我们可以使国民储备增长,但是官方储备增长的速度避免出现像过去几年出现的大幅度增长情况,就是藏汇于民,这也是我们资本账户逐渐开放,走向人民币更加灵活的汇率制度的一个趋势,在这样一个驱使下做各样的准备。我觉得现在,趁着国际市场比较混乱的时候,美元贬值驱使比较明显的时候,我们现在进行改革也许是有利的,我觉得也到了我们外汇体制和资本上体制做一些改革的时候了。当然要加强监管,这也是这次金融危机给我们的教训。加强监管,有步骤、有准备,逐步来做这个事情,这是第四点。
最后一点,我们现在从总长期的角度,今后现在最大的问题是世界经济结构经过这次危机在调整,美国的储蓄率在上升(现在还没有上升,可预见将来是会上升的),消费率在下降,世界的经济结构在变化,我们的内需的增长,特别是消费需求的增长,我们的储蓄率如何从50%能够降下来,我们的居民消费率从35%能够升上去现在是当务之急。而这个现在不仅是一些政策的调整,也不仅是包括社保体制这样的调整,我觉得涉及到一些财税体制改革的问题。特别要针对这几年中国储蓄率上升的主要原因使企业储蓄大幅度上升的原因,而不是居民储蓄大幅度上升。我们的研究是这些年居民储蓄是30%左右,基本是稳定的。但是因为居民的可支配收入占GDP的比值在下降,企业的可支配收入在上升。怎样围绕企业储蓄大幅度上涨问问题进行一系列的财税体制改革,我们才能为下一阶段,国际经济结构调整之后我们能够保持持续的增长,解决我们这个结构性的大问题打好体制上的基础。
我就讲这点吧。

2009年7月17日星期五

CCD辨识法及DSP方案

各位工程商及采购人员,常遇到一件困扰的事:"我采购的摄像机到底是什么方案的?CCD又是怎么分辨?"在此做个简单的介绍:
先从CCD看起:如果是枪机,打开防尘盖,看CCD表面:
看到没?上下两排接点,中间缺了个大门牙,这就是SONY CCD的特征。


没缺门牙,SHARP CCD

一样没缺门牙,但线条较粗,这是松下CCD

就这样了!看久就不会被骗了,以我的经验,在商场铺头,随便拿个SHARP
CCD冒充SONY的,至少有3成......
再谈谈方案,一般人认为不就是SONY、SHARP、Panasonic方案?其实里头还有玄机:
理论上,任何CCD是可以搭配任何D.S.P的。
目前的CCD,有:SONY(高低解), SHARP (高低解). Panasonic(高低解),
韩国A1+(低解), 三星(低解,本来已停产,听说又卷土重来),
还有在韩国封装,号称松下芯片的,共以上6种品牌。
而D.S.P呢,就多了:
SONY 有SS-1(2163), SS-11(3141/2),SS-11X(4103),SS-HQ1, SS-2
Sharp有D4(38603),D5快出来了
松下以D5为主
还有日立(某台资大厂用的),
韩国NEXTCHIP,
台湾A-NOVA
基本上不出这个范围
而其中一般有在生产的组合,
SONY低解CCD: 可配 SONY SS-11, SS-1(很少),SS-11X. NEXTCHIP, HITACHI, A-NOVA
SONY高解CCD: 可配 SONY SS-1,HQ1,SS-11X, NEXTCHIP, HITACHI, A-NOVA
SHARP 高低解: 可配 SHARP D4, HITACHI,NEXTCHIP, A-NOVA
Panasonic 高低解: 目前以配 Panasonic D5为主,
A1+ 低解: 配SONY SS-11 (混充SONY卖)
三星低解: 配SONY SS-11 (以前SONY CCD缺货时最常拿来混的)
傻眼了吧!所以不是说是不是索尼CCD就能了事了,
各种搭配其实只是成本上的不同,而品质呢?完全靠功力,做的好的SHARP
机品质绝对比做的差的SONY机还好还便宜.
以上只是基本知识,能不能买到好机子? 呵呵!基本上还是看你的造化!
摄像机有420线的,480线的,普通人"肉眼凡胎"还真不好辨认.
卖正品真货反被客户给嘲笑了一把。一听价格都怀疑是不是自己公司在以暴利销售产品。最近几年SONY的芯片其实一直都有间间断断的断货事件。导致真品的价格一直都是比较高,生产企业没大的量根本无法实现产品价格的大幅度降低。成本不能降,为何产品价格已是一年比一年低?当然问题有很多,使用质量不好的产品配件,使用更好的生产工艺,使用集团采购降低采购成本,偷漏税,可这些能降低10~20%的价格吧。但事实是市场上的摄像机价格的降低是其它行业产品所无法比较的。目前有不少用夏普或其它芯片替代SONY芯片的。多数为磨去CCD上的产品标记,另做假标签等,造成以假乱真,欺骗消费者的恶劣行径。做过市场的基本上都知道,480线的SONY
CCD摄像机,且不论是否有特别功能,仅一般的480线的SONY
CCD摄像机在对工程公司的市场售价仅为三百多元人民币时,做真品的也就只有望而兴叹了。要有良性竞争就必须是在同一个起跑线上,来衡量竞争优势。为了让更多的中国安防行业从业人员对产品有所了解,这里贴出SONY产品型号及芯片组合并注明,希望能给市场一个公正的衡量标准。对消费者能有所教育,
1、A4212SP/G4212SP/D4212SP:
芯片: CXD3141、CXD1267、CXA2096+ICX405;
2、A4512SP/G4512SP/D4512SP:
芯片: CXD2163BR、CXD2006、CXD2480R+ICX405;
3、A4512SPE/G4512SPE/D4512SPE:
芯片: CXD2163BR、CXD2006、CXD2480R+ICX405(调低照度,属假低照);
4、A4812SP/G4812SP/D4812SP:
芯片: CXD2163BR、CXD2006、CXD2480R+ICX409;
5、A4512SPEX/G4512SPEX/D4512SPEX:
芯片:CXD2163BR、CXD2006、CXD2480R+ICX255;
6、A4812SPEX/G4812SPEX/D4812SPEX:
芯片:CXD2163BR、CXD2006、CXD2480R+ICX259;
当前存在的市场问题:
1、用2163+ICX405冒充假高线;
对策:教育客户真高线=2163+ICX409。
2、用2163+ICX405冒充假低照;
对策:教育客户真低照=2163+ICX255。
3、用ICX409或ICX255冒高线低照;
对策:教育客户真高线低照=2163+ICX259。
SONY日夜转换型:
1、D4212SPRI:
CXD3141R、CXD1267、CXA2096+ICX405;
(如用CXD3142R代替3141,则多外同步功能)。
2、D4812SPRI:
CXD2163BR、CXD2006、CXD2480R+ICX409。
3、A4212SPR/G4212SPR:
CXD3141R、CXD1267、CXA2096+ICX405;
(效果不明显,暗时有色斑)。
4、G4512SPR:
CXD2163BR、CXD2006、CXD2480R+ICX409;
(效果明显,暗时为黑白,没有色斑)。
高线/低线、IC及电流关系:
线 数 IC及 CCD配搭 电 流
420TVL 3141(1267、2096)+ 405 120MA
450TVL 2163(2006、2480)+ 405 120MA
480TVL 2163(2006、2480)+ 409 170MA
450TVL 2163(2006、2480)+ 255 170MA(低照度)
480TVL 2163(2006、2480)+ 259 170MA(高线低照度)
拆机看板芯片是不是Sony:
如果主芯片(最大那颗.) 是SONY
3141或3142,那只能是420线的,如果供家说是480线就是骗人。
如果主芯片(最大那颗.) 是SONY 2163,
基本上这方案可接480线及420线CCD,要确认的话必须把CCD拆下,CCD编号如果是
ICX409AK 就是480线用的,ICX405AK就是420线用的。
板上有两颗晶振 ,如果分别是28.375及17.7344, 那就是480线了.
"高清晰摄像机"指标如下:
·彩色520TVL,1/3英寸 SONY CCD,0.28Lux,52dB信噪比;
·采用TE0 Bio-ele Image Process技术,高清晰低噪声;
·ATW自动跟踪白平衡,具有所定功能;
·连续CCD前后移动,适应不同镜头;
·防漂色、图像颜色可调节;
·手动电子快门设定:1/50,1/100, 1/250,1/500,1/1000,1/2000,1/4000,
1/10,000s;
·LLT防飘色,图象更稳定;
·支持双电源供电,+12V DC/~24V AC,宽电源设计,并且直流电无极;
·非常适合对清晰度、低噪声和色彩还原性要求高的场合,如(银行、道路)等监控场所。
CCD是用Super- HAD,那不外乎就是索尼408/409/404/405AK,搭配的D.S.P
不外乎HQ1,SS-1,(SS-11是不可能的,因为无法做Line-lock),若用
HQ-1,按原厂规格,最高520线而且必须是S-Video输出, 若是Composite video
输出,最高就480线,别跟别人瞎起哄,500 多线的乱喊,再偷偷告诉你HQ1 D.S.P
本身温度会高到摄氏60多度,还不知道能撑多久
因为目前安防用能拿的到的只有两种CCD,在PAL制,有27万及41万两种,27万叫"低解"CCD(说好听点叫"中解"或"普解")
,41万叫"高解"CCD。 想起展会会场上一堆厂商架起 Resolution
测试图,明明看来就是300多条,还硬说是520线,不知是我瞎了眼还是他们。
用低解CCD,加上能买到的DSP,做出来的机子,在分辨率上大家都差不多,约在300多线,这是"做"出来的,另外还有增加线数的方法,叫做"吹"出来的!350!380!420!还有"软件增强450条"!
高兴多少就写多少,反正既不被罚款也不会坐牢! 没事的!
用高解CCD,加上能买到的DSP,做出来的机子,在分辨率上大家还是都差不多,约在400多线,至于要写470,480,520,550
还是600? 随你高兴,没人管的!
一般VCD约200多线,DVD
400-500线,电视台用的betacam录像机约350条,这是指机子能表现出来的,如果内容太差劲是不算的,这是指用市面上能买到的CCD加上DSP方案来说的,至于像索尼,松下他们有另外的搞法,480或550线,那是真的!
像数越高当然分辨率越高,不过市面上就那几种CCD跟DSP,也由不得你东挑西检的,
以目前普遍的技术,用同样的CCD及DSP作出来的摄像机的分辨率,各家其实都差不多。但是日本索尼及松下虽然用跟我们一样的CCD,但DSP是特殊订制的,做出来的机子是好些。其实测分辨率多少条并不重要,因为
CCD现在只有两种:高线及低线。用高线CCD,不管那个品牌CCD配那个品牌DSP,做出来的机子,分辨率都差不多,人眼在50条范围内一般不容易分辨的出来,除非技术太差,把高线机搞成低线机了,或跟本就是假高线!
可是有些人有这方面的经验:明明是真的高线机,为什么比较两个厂家的,硬是有的比另一家清楚?
如果说人眼在50条范围内一般不容易分辨出来,那肯定两台分辨率超过50条了?
又跟上面说的互相矛盾了!
如果真的把机子拿到仪器上测,又会发现分辨率还真的差不多!这是啥回事?
还是人眼的问题,要分辨影像好坏,除了分辨率外,还有颜色及影像的干净度,颜色跟色彩还原性有关,干净度跟噪讯有关,这两点会严重影响到眼睛对清析度的判断。
举个例子,中央电视台放的节目,大概就350条,但没有人觉得它不好!为什么?因为颜色是正确的,从导播室出来的影像都是校正过的。电视台用的录像机每台都是几十万,贵在那儿?其中有一项就是颜色。
再说监控摄像机这块,只要把颜色调正确,噪讯降低,在一样的分辨率下,用眼睛决对看的出差别,明明是低线机,为什么有人标450条?很简单!你的低线机标420,但我的机子看起来硬是比你"清楚",
所以我是450线!在仪器上其实都差不多---300多条而已!
所以,在摄像机行业中,技术指标跟本是无意义的,低线机分辨率就是420,标380的就准备倒闭吧!高线机标480就算老实的了,讯噪比就是>48dB,或标50,52,全国统一,标SONY
CCD都还有可能是假的,标EX-View
就更离谱,全国卖掉的EX-VIEW机可能比SONY生产出来的CCD还多!整个规格大概只有型号及尺寸两样是对的,连重量都懒得去称称看,还有彩色机分
EIA,CCIR, 黑白机分NTSC ,PAL 的,总之。 乱! 乱! 乱! 习惯就好了……
一般409 CCD ,实测是400出头,但同样条件,我用SONY 及
松下日本原装机来测,确实有480 没错。
一般说日系产品,其实很多是从韩国及台湾OEM的,方案大家都一样,当然也是400多条,还不算那些取个鬼子名的贴牌货,什么"山"
"京""本""达""上""下""野"……就算松下,苏州厂的品质也是一般般,SONY OEM
来的也是用
2163方案,真正日本厂做出来的,做工精致,用料实在,连DSP都不一样,
只是价格超贵的。
比较5厂家CCD红外敏感度
说到红外灯的有效距离,一直是个给人诟病的话题,大家都觉得厂家给的数据不老实。
其实使用中的实际效果距离差异,是诸多问题的合力,不可一概而论。比如背景的反射,比如镜头的光通量,比如CCD的红外敏感度……;
例如比如效果标准的问题,大家都是主观的标准,有的要求看清人脸,有的觉得能看到物体的活动就可以了……等等,这个说来就远了,个人以为EIE判断线缆传输效果的方法是很值得借鉴的……这个……话题太大,下次再说。
说到CCD的红外敏感度,在实际项目中,兄弟认为是最需要值得注意的地方。上次贵州的有个导弹厂区的项目,工程商打电话过来,说是其中一个点红外灯无效,跑
过去一看,原来他们那个点用的CCD是完全不对红外敏感的……晕……判断CCD的红外敏感度,最简单也最有效的方法是看CCD厂家的光谱图,是否可以在红
外光下工作,是否可以使用940NM红外光,一目了然。但是,很多厂家都是不提供光谱图的,那么,最好的办法,就是多选几款不同厂家的
CCD比较一下了。这次的比较,不是红外灯的定型测试,就没有在室外进行,是在我们生产大楼三楼焊接室的一个密闭的暗室里进行的。使用的CCD有松下
CP470、三洋的4592P、WAT-232、WAT-902H,配用的是腾龙的红外对应手动变焦和COMPUTAR的定焦,还有两种一体机,三星的
4203、日立的VK-S454ER测试过程从略……现在说说主观感觉。
WAT-902H是行内红外敏感口碑很好的型号,1/2寸黑白的,多个厂家长距离红外系统的标配CCD,正常情况下和其它CCD相比,是不太公平的;但是在测试中,我们发现同样是WATEC出品的WAT-232彩转黑对红外灯的敏感度比902H更好,可惜就是价格太贵了点。
松下CP470、三洋的4592P以及这次没有同时比较的三星2307,基本上是同一规格的主流型号,大家用的都比较多,貌似比较有指导意义,其实他们的红外敏感度也都是半斤八两。用我们开发部的同事的观点来说,差不多啦。
具体说来,我个人觉得松下CP470成像效果要明亮均匀些,三洋的4592P自动增益稍高有点影响画质;上次测试中的三星2307成像比三洋的4592P显的灰暗些,但是图象线条更清晰。至于一体机,这是有光通量等先天缺陷的,期望值不能过高。

试中,日立的VK-S454ER的红外环境效果虽然不能和上述机器相比,但是和三星的4203一比,就好太多了。三星的4203的红外表现实在太差了,我
认为是不宜作为红外灯配套的摄像机的。开发部的同事声称,上次测试同样的红外灯,其他CCD能看80米到150米不等,同样是一体机的755PX可以看到
40多米,4203也就是马马乎乎20多米。下次试试480BP和松下的352,不知道效果如何。……
呵呵,都是主观感觉,也就是一家之言,大家随便看看就可以了……先写到这里,有空再补充。2月底的测试比较FCB-480CP的低照度表现是要比VK-
S454稍好些,但是红外敏感度VK-S454要比FCB-480CP好一些。
一体化变焦摄像机发展趋势的看法
一、一体机的定义
"一体机"是一体化自动聚焦摄像机的简称。是指摄像机机身与专用变焦镜头集成在一起的,具有自动聚焦及镜头变倍功能的摄像机
"一体机"将变焦镜头与摄像机集成在一起,并且具有自动聚焦功能,通过机身控制按键或远程控制方式,根据所需观察的画面既被摄物体的特征灵活的进行画面远景和近景的变化设置,极大的简化了摄像机的安装与操作。
做为监控系统前端摄像机、镜头的集成产品,且具有自动聚焦功能。"一体机"日渐成为前端设备的"宠儿";是前端设备的主流产品。
二、"一体机"组成
1、硬件部分:摄像机,专用变焦镜头
2、软件部分:自动聚焦,变倍
三、"一体机"用途
1、配合智能球使用
智能球市场的需求日益增大,特别是"平安城市"项目。
2、配合云台使用
3、配合电教投影机使用
这是安防监控以外的市场,相当庞大。市场需求起码目前比安防监控的市场大。
四、"一体机"的产品优势
1、480TV(甚至540TV)高清晰
2、自动聚焦功能
3、强大的光学变倍。常见的如16x,18x.22x,23x,32x,35x
4、集成度高
5、性价比优势明显
五、目前市场的主流产品品牌及型号
1、SONY索尼:FCB-45BP/48BP/480BP、FCB-980BP
2、HITACHI日立:VK-S214ER/274ER;VKS454ER
3、LG:
4、SAMSUNG三星:SDZ-310/300
5、CNB世林:
六、"一体机"产品的不足
1、硬件部分:
1.1 摄像机
目前产品都是使用1/4
CCD产品,由于摄像机靶面的限制,使得一体化摄像机在摄像机的基本技术指标方面如:清晰度、照度、信噪比等方面存在不可逾越的瓶颈。
1.2 镜头
日前使用的镜头都是来源于最初的使用的镜头家用摄录一体机(就是我们常说的"DV")行业,并非是为了为了监控的"一体机"产品而量身定做的镜头。现在使用的镜头产品亦是1/4″靶面的产品,那么同样在镜头的基本技术指标方面如:F值、视场角等方面存在不可逾越的瓶颈。
2、软件部分:
高端产品品牌SONY索尼、HITACHI日立的自动聚焦已经做得非常好。基本上可以做到焦距有变化,自动聚焦一次聚焦清楚。其他品牌的一体机产品的自动聚焦速度尚有提高空间。
七、"一体机"有无提高的可能
1、硬件部分
1.1 摄像机肯定可以。摄像机本身就有1/4″1/3″1/2″系列CCD,1/4″CCD能做到,1/3″1/2″CCD当然能做到更好。
1.2 镜头也可以做到。需要重新开发,时间及研发成本投入相对较大,需要有实力的厂家。
2、软件部分
自动聚焦及变倍功能达到目前高端品牌的效果已经相当好了
八、笔者观点
1、目前的"一体机"产品都是缘于家用摄录一体机概念。并非是为了安防监控的需求而量身订制的产品,一定会有这样的产品出现。
2、"一体机"的关键技术是自动聚焦及镜头变倍,这方面现在的高端产品已经很成熟。反倒是硬件方面难实现,摄像机没什么困难,1/3″1/2″CCD都会比1/4″CCD在基本技术指标方面得到本质上的提高。
3、镜头就比较难实现,没有1/3″1/2″靶面的镜头,必须要订做。其技术瓶颈及开发成本都将是很大的门槛。
4、综合考虑,1/3″"一体机"产品还是有实现的可能。

2009年7月16日星期四

classic words

"假如我是对的,相信你是会接受的,因为你是聪明而智慧的"。——芒格
无论你使用什么样的方法挑选股票或者股票共同基金,决定成败的关键在于一种能力---不受市场波动的干扰,坚持到投资获得成功的能力。决定股票挑选者命运的不是他们的头脑,而是他们的耐力。敏感的投资者,无论他有多聪明,往往经受不住命运不经意的打击,而被赶出股市。
------彼得.林奇
乱局即大局
索罗斯说过:金融市场天生就不稳定,国际金融市场更是如此,国际资金流动皆是有荣有枯,有多头也有空头。市场哪里乱哪里就可以赚到钱。辨识混乱,你就可能致富;越乱的局面,越是胆大心细的投资者有所表现的时候。
一项情形变的越遭,就会向上弹的越高。跌的越深,市场越乱就越可能出现大行情。很多情况常常是:市场乱,投资人跟着一起乱。所以我们常常可见到恐慌性卖压,投资人奋勇追高等新闻标题。乱局对冷静的客观投资人来说,正式天赐良机,因为这可能是大捡便宜货的机会,也是财富重新分配的时候。
不买落后股,不买平庸股,全心全力锁定领导股! -----[美国]威廉.欧奈尔
  
主流类中的股票,常能涨得惊天动地,但
其他平庸个股,连一丝涟漪都不会起!------[美国]威廉.欧奈尔
  
选择一个行业股票时,要选两家,但不是随便找两家,应选一家最好和一家最差的!----[美国]乔治.索罗斯
  
投资不仅仅是一种行为,更是一种带有哲学意味的东西! ------[美国]约翰.坎贝尔
  
不进行研究的投资,就象打扑克从不看牌一样,必然失败! ---[美国]彼得.林奇
  
不要懵懵懂懂的随意买股票,要在投资前扎实的做一些功课,才能成功!
-----[美国]威廉.欧奈尔
  
你永远不要犯同样的错误,因为还有好多其他错误你完全可以尝试!
——[英国]伯妮斯.科恩
  
风险来自你不知道自己正在做什么! ——[美国]沃伦.巴菲特
  
错误并不可耻,可耻的是错误已经显而易见了却还不去修正! ——[美国]乔治.索罗斯
    
经验显示,市场自己会说话,市场永远是对的,凡是轻视市场能力的人,终究会吃亏的!——[美国]威廉.欧奈尔
  
如果你没有做好承受痛苦的准备,那就离开吧,别指望会成为常胜将军,要想成功,必须冷酷!-----[美国]索罗斯
  
股票市场最惹人发笑的事情是;每一个同时买和同时卖的人都会自认为自己比对方聪明!----[美国]费瑟
  
始终遵守你自己的投资计划的规则,这将加强良好的自我控制!
----[英国]伯妮斯.科恩]
  
承担风险.无可指责,但同时记住千万不能孤注一掷! ---------[美国]乔治.索罗斯
  
股票市场是有经验的人获得更多金钱,有金钱的人获得更多经验的地方! ---[美国]
朱 尔
  
每个笨蛋都会从自己的教训中吸取经验,聪明人则从别人的经验中获益! ---[德国]
俾 斯 麦

股市长久的获利公式

众所周知,在投机市场能长久生存是很难的,能做到长久持续获利的投机者确实是凤毛麟角.市场上很多投机者,最后都带着疲惫的身心,受伤的钱囊,黯然地离开了市场.尤其是曾经如流星般辉煌的明星,他们升得很快,跌得也很惨.
  如何界定投机者在市场上的成功呢?
首先,是在一段较长时间内,其盈利交易的利润要大于亏损交易的损失.成功=盈利-亏损>0.
这个公式是如此简单,以至常常被人忽视.
  股市投资是一个长期的工作.职业.它不是百米冲刺,而是漫长的马拉松运动,不在于你一次能获得50%或者100%的盈利,而在于你能长久地在市场生存并获利.美国投资大师巴菲特每年的资金回报率为30%左右就奠定了其世界第二富翁的地位.巴林银行的利森,刚到新加坡时,其资金回报率很高,却酿成了巴林银行的破产.
  成功=盈利-亏损>0.成功公式要求投机者十分看重自己的本金,每次交易都不能遭受重大亏损,如果出现亏损,应该尽快地摆脱亏损头寸.相反,盈利的交易应尽可能地使利润扩大化.
  如何控制每次交易的亏损呢?
首先,投资者入市前不要考虑要赚多少钱,首先设想的是,如果判断错误怎么办,每次交易最多承受多大的风险,投入多少资金,亏损的资金占本金多少.这里有个经验指标,每次亏损不超过本金的3%.如果亏损了,下次亏损不超过剩下的本金的3%.这样即使你连续10次判断失误造成亏损,你还能保有近80%的本金,完全有资本重新再来.并且,连续10次亏损的概率是很小的.
  如何使利润最大化呢?
要牢记一个原则,就是不能让起先盈利的交易以亏损告终.当你趋势判断正确,并且在正确的时机中介入市场,你会很快享受盈利的快乐,这时,所考虑的不应是落袋为安,不要害怕市场突然下跌,往往这种害怕是你的情绪在作怪,你应该希望你的利润增长,应该欢喜地看着市场上扬.
同时,你的止盈点应靠近市场最近的低点,和市场一同上扬.永远不要考虑卖个最高价,所要考虑的仅仅是市场趋势反转时你的出场点.这时不要贪心,不要指望市场回到最高点再卖出.不要让盈利的交易亏损,这个原则的作用就在于此.
  要做到长久的获利,就必须牢记成功公式,减少进出市场的次数,能使你的判断成功率大增.要知道,你介入市场,不是要证明你有多能干,而是在低风险下获取利润.

2009年7月15日星期三

vim 简明完全手册

一、 对vim配置文件的编辑:
:scriptnames 发现配置文件的位置
:edit ~/.vimrc 编辑该配置文件
vim说明文件的阅读:
CTRL-] 跳转到当前光标所在单词对应的主题
CTRL-O 回到前一个位置
复制一个样板vimrc文件(unix):
:!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc
复制一个样板vimrc文件:
:set compatible?
查看vim配置文件的所在位置:
:scriptnames 或 :version
拷贝vimtutor,并重命名:
vim -u NONE -c `e $VIMRUNTIME/tutor/tutor.cn` -c `w! TUTORCOPY` -c `q`
vim -u NONE -c "set nocp" TUTORCOPY

会话保存了整个Vim的外观. 视图保持一个窗口的属性
:mkview [num] "保存当前窗口的视图,num可以是1-9"
:loadview [num] "载入上次保存的视图,num可以是1-9"
:mkview ~/.vim/main.vim "保存当前的文件的视图到文件"
:source ~/.vim/main.vim "载入已存在的试图文件"
:set viminfo=string "string指代你要保存的东西.
其语法是一个选项字符跟一个参数. 一对对的选项/参数以逗号分隔",可用选项有:
: 要保存的冒号命令历史记录数
@ 要保存的输入历史记录数
/ 要保存的搜索命令历史记录数
r 可移动介质, 对此不会保存其标记信息(可以多次使用)
! 以大写字母开始并且不含有任何小写字母的全局变量
h 开始时禁用°hlsearch°选项
% 缓冲区列表(只有没指定文件参数启动Vim时才会恢复这些信息)
c 使用°encoding°选项中的方法进行字符编码转换
n viminfo文件的名字(必需是最后一个选项)
在Vim中用":wviminfo"和":rviminfo"命令来保存和恢复这些信息,
:wviminfo! ~/tmp/viminfo "保存一个viminfo的信息"
:rviminfo! ~/tmp/viminfo
"读取一个viminfo的信息,这样可用把其他文件的viminfo那来用"
:mksession vimbook.vim "创建一个会话文件"
:source vimbook.vim "恢复一个会话状态"
vim -S vimbook.vim "启动Vim时恢复某个会话"
sessionoptions 选项的设置如下,如::set sessionoptions+=resize
"恢复Vim窗口的大小"
blank 空窗口
buffers 所有的缓冲区, 而不仅是当前窗口中的
curdir 当前目录
folds folds, 包括手工创建的
help 帮助窗口
options 所以的选项和键映射
winsize 窗口大小
========================================================================================
二、 在普通模式下
移动光标:
h 左 j 下 k 上 l 右
gj 下,长字符串行折行时只移动下一个屏幕显示行
gk 上,长字符串行折行时只移动下一个屏幕显示行
w (小)向后(右)移动一个word,光标在word的首字母处,如3w,向后移动3个word
b (小)向前(左)移动一个word,光标在word的首字母处,如3b,向前移动3个word
e (小)向后(右)移动一个word,光标在word的尾字母处,如3e,向后移动3个word
ge (小)向前(左)移动一个word,光标在word的尾字母处,如3ge,向前移动3个word
W
(大)向后(右)移动一个word,光标在word的首字母处,如3w,向后移动3个word,但忽略其他边界字符
B
(大)向前(左)移动一个word,光标在word的首字母处,如3b,向前移动3个word,但忽略其他边界字符
E
(大)向后(右)移动一个word,光标在word的尾字母处,如3e,向后移动3个word,但忽略其他边界字符
gE
(大)向前(左)移动一个word,光标在word的尾字母处,如3ge,向前移动3个word,但忽略其他边界字符
$ (shift
4)移动到当前行行尾,同<End>功能键,可以使用"2$"记数,移动到下一行的行尾
^ (shift 6)移动到当前行的第一个非空白字符上,不接收记数移动
0 (数字)移动到当前行的第一个字符上,同<Home>功能键,不接收记数移动
f
(小)向后(右)搜索某一单字符,光标在被搜索字符上,如"fy",搜索下一个字符y的所在,可用";"向后重复查讯,用","向前重复查讯
F
(大)向前(左)搜索某一单字符,光标在被搜索字符上,如"Fy",搜索上一个字符y的所在,可用";"向后重复查讯,用","向前重复查讯
t
(小)向后(右)搜索某一单字符,光标在被搜索字符前,如"ty",搜索下一个字符y的所在,可用";"向后重复查讯,用","向前重复查讯
T
(大)向前(左)搜索某一单字符,光标在被搜索字符前,如"Ty",搜索上一个字符y的所在,可用";"向后重复查讯,用","向前重复查讯
% 跳转到与当前光标下的括号相匹配的字符上记数+%
跳转到正文的某个部分,如"50%"将会把光标定位在文件的中间
gg 跳转到第一行
G 跳转到最后一行,可用"23G"等跳转到指定的行
H 跳转到本屏幕的开始
M 跳转到本屏幕的中间
L 跳转到本屏幕的结尾
zz 把当前行置为屏幕正中央
zt 把当前行置于屏幕顶端
zb 把当前行置于屏幕底端
删除字符:
x (小)删除一个字符,"4x"删除4个字符
d (小) 后跟任何一个位移命令,
它将删除从当前光标起到位移的终点处的文本内容,如:dd 删除一行字符,dw
删除一个word,"d4w"删除4个word,"d2e"删除2个word到词尾,"d$"删除自当前光标到行尾的内容.
c (小)删除一个word后并进入Insert模式,如:cc 删除一行后并插入一行(同"c$")
r 输入一个字符用以替换当前光标下的那个字符
J (大)删除一个换行符
u (小)撤销操作
CTRL-R 重做(反转撤消动作)
U (大)撤销上一次的操作,包括对自己的上次操作
快捷方式:
x 代表dl(删除当前光标下的字符)
X 代表dh(删除当前光标左边的字符)
D 代表d$(删除到行尾的内容)
C 代表c$(修改到行尾的内容)
s 代表cl(修改一个字符)
S 代表cc(修改一整行)
编辑命令:
i (小)在当前光标之前插入文本
a (小)在当前光标之后插入文本
o (小)当前行的下面插入新一行
O (大)当前行的上面插入新一行
9k 上移9行,其他命令也可用数字+命令的方式实现,重复的编辑操作
ZZ (大)保存当前文件并退出
放弃编辑:
:q! 放弃所有的修改并退出
:e! 放弃所有修改并重新载入该文件的原始内容
求助:
:help 得到帮助文件的起始点,等同于F1功能键
:help {subject} 得到某个特殊主题的帮助,如::help
CTRL-A,查看关于CTRL-A的帮助
:help `command` 得到关于某个选项的帮助,如:help `number`
:help E37 得到某个错误ID号的帮助
三、 小技巧:
交换两个字母,"xp"
光标在字母时中间,删除整个单词,"daw";
并可以用"."重复操作来删除整个单词。"daw"即"Delete A Word"
修改整句话,即删除整句后加入一个空行,不包含句子后面的空格(是"Inner
Sentence"的缩写),"cis"
修改整句话,即删除整句后加入一个空行,包含了句子后面的空格(是"a
Sentence"的缩写),"cas"
修改整句话,即删除整句后加入一个空行,包含了句子后面的空白,"das"
用v进入visual模式,用as可以选择一个句子。
%s/\<oldword\>/newword/gc
"把文件中所有的oldword替换成newword,如果没有'c'则就不进行提示,"g"标志则指示替换操作将一行中所有出现的目标字串都进行替"

在filename1中打开filename2,并比较filename1和filename2
:edit filename2
:vertical diffsplit filename2

简单映射:使用":map"命令,把一连串Vim命令以一个按键来表示。":map"不带参数则列出已定义的映射。
:map <F5> i{<Esc>ea}<Esc>
"在一个word的前后加上大括号"其中<Esc>和<F5>为手工键入,而不是键盘上的功能键。当把一个vim功能键变为映射
键后,就失去了原有的意义,至到映射被删除。

对字符串行进行排序:
第一种方法:
/^firstline
j
:.,/^$/-1!sort
说明:上面的命令首先会跳转到第一行, 即开头是"firstline"的行,
然后再下移一行, 用sort程序过滤自该行直至下一个空行.
第二种方法:
在Visual模式下选择要排序的行然后用"!sort"命令
反转行序:
:g/^/m 0
说明:g是命令global,m是命令move
对一串连续的行进行反转行序:
:`t+1,.g/^/m `t
说明:首先移到第一行并以"mt"标记该行.然后移到最后一行执行命令

统计文件全部内容的字数:
先键入"g",再用CTRL-g
统计文件部分内容的字数:
方法一:
将光标移到要统计部分的开头处执行"g CTRL-G"命令,
然后移到要统计部分的末尾再用一次"g CTRL-G".
计算两次命令得到的当前word位置之差, 就得到这部分内容的字数统计
方法二:
使用Visual模式, 选择要统计的部分. 然后用"g CTRL-G".

在编辑脚本或程序时查找帮助页:
光标移到要查找帮助的关键字上,然后键入"K"(大写),Vim会对光标所在的词执行"man"程序。
让man页与vim在一个窗口中显示:
首先运行man对应的文件类型plugin(可以把它放到vimrc文件里):
:source $VIMRUNTIME/ftplugin/man.vim
然后可以使用vim的"Man"命令对某些字符进行查讯帮助,如:"Man 3
echo"查找man页第三节中的echo,通过CTRL-W来切换当前窗口。

消除所有行尾的多余空格:
:%s/\s\+$//
说明:指定的行号范围是"%", 即应用于每一行中.
":substitute"命令要查找的字串是"\s\+$".这会查找位于行尾的一个或多个空白字符,":substitute"命令的"to"部分是空内容:"//".
即把此类的空白都替换为空。
查找一个word在何处被引用:
编辑所有包含了"frame. counter"的C文件
vim \VimBacktick{}grep -l frame_counter *.c\VimBacktick{}
说明:"-l"参数, 所以该命令将只是列出包含了该词的文件名而不显示匹配的行。

如果你想查找所有C程序中的"error string", 就可以用下面的命令:
:grep error_string *.c
说明:跳转到下一个匹配的行使用":cnext"命令.跳转到前一个匹配的行可以用":cprev"命令,
":clist"命令则可以一次列出所有的匹配
注:内置的":grep"命令用到了外部命令grep(Unix)或findstr(Windows).

在":"号命令行中:
CTRL-C或<Esc> 可以放弃所有已经键入的命令.
"CTRL-D"可以列出未用<tab>补全的命令。
"CTRL-P"可以向前返回已经输入过的命令,效果如同<Up>
"CTRL-N"可以向后返回已经输入过的命令,效果如同<Down>
q: 在屏幕底部打开一个命令行(小)窗口. 该窗口的内容是历史记录,
最后一行是空行。对命令行窗口作出的修改不会被保存. 历史记录不会因此被改写.

可以用CTRL-Z来挂起vim,并回到shell中,之后可用"fg"来回到vim中。

执行shell命令:
在Vim中:
:!{program} 执行{program},如!ls,!pwd,!shell等
:r !{program} 执行{program}并读取它的输出
:w !{program} 执行{program}并把当前缓冲区的内容作为它的输入
:[range]!{program} 以{program}过滤指定的行

vim -x exam.txt "加密文件exam.txt"
vim -x -n file.txt
"加密file.txt文件,并不生成交换文件,注:Vim会把所有东西都放到内存里"
:setlocal noswapfile "可在编辑过程中禁止使用交换文件"
:X "(大写)设置对文件的加密"
:set key= "停止对一个文件的加密,把`key`选项设置为一个空字串"
vim -b datafile "编辑一个二进制文件"
:set display=uhex
"设置以十六进制格式显示不可打印字符,"ga"命令可以来查明当前光标下字符的本来面目"
g CTRL-G "可以获知光标所在字符是整个文件中第几个字节"
2345go "转到第2345个字节去"
使用xxd程序编辑二进制文件的过程:
1 用vim -b datafile 打开二进制文件
2 用":%!xxd"进行十六进制格式的转储
3 编辑完毕后使用":%!xxd
-r"反向转换,逆向转换时只有其十六进制形式被认为是有效的.
对可打印形式的改变会被转换程序忽略

:hide edit two.txt
"在编辑另一个文件时而又想不保存当前的文件时,可用隐藏缓冲区的编辑"
:buffers 或:ls "列出整个缓冲区列表,"
列出的缓冲区列表说明如下:
u 未被列出的缓冲区|unlisted-buffer|[[译: 既然未被列出你又怎么知道? :ls! %
当前缓冲区
# 上一次的活动缓冲区
l 被载入并显示在某窗口中的缓冲区
h 被载入但隐藏的缓冲区.
= 只读的缓冲区
- 不可编辑的缓冲区, 其中°modifiable°选项被关闭
+ 有改动的缓冲区
:buffer [num] "在当前窗口编辑缓冲区"
:sbuffer [num] "打开一个并列的窗口编辑缓冲区"
:bdelete 3 "一个缓冲区从列表中去除"
:bnext "跳转到下一个缓冲区"
:bprevious "跳转到前一个缓冲区"
:bfirst "跳转到第一个缓冲区"
:blast "跳转到最后一个缓冲区"

:{range}center [width] 让一个范围的行居中
:{range}right [width] 让一个范围的行右对齐
:{range}left [margin] 让一个范围的行左对齐,[margin]指左边留白的宽度
左右对齐的方法:
1.使用宏包:runtime macros/justify.vim
2.使用外部程序:%!fmt

合并多行文本:
:g/./,/^$/join
说明:
:g/./ 一个全局命令, 查找那些至少有一个字符的行.
,/^$/ 指定一个范围, 从当前行开始(非空行)直到一个空行.
join ":join"命令把指定范围内的行连为一行.

重新格式化文件:
1.先修改所要修改的内容
2.用"v"命令进入Visual模式
3.选定所要重新格式化的内容后键入"gq"
4.其他格式化方式:"gqap"格式化一段文本(段以空行为分界).
包括当前光标之前的部分,"gggqG"格式化整个文件

dp "两个文件的不同被消除了,
当前窗口中引起不同的内容被放到另一窗口中缺少这段内容的地方去了.
"dp"是"diff put"的缩写"
将光标移到右边的窗口, 到"changed"插入的位置.键入命令:do
vim也会消除了该位置的不同之处,"do"意为"diff obtain"

将"Last, First"改为"First Last",使用命令:
:%s/\([^,]*\), \(.*\)/\2 \1/
说明:替换操作的命令参数形如"/from/to/".
斜杠是用来分隔"from"和"to"的.对于"from"部分对应的内容:
第一个部分位于\( \)之间, 对应"Last" \( \)
匹配除逗号外的任何东西[^,]
任意次重复*
匹配", " ,
第二个部分位于\( \)之间, 对应"First" \( \)
任意字符 "."
任意次重复 "*"
在 对应"to"的部分我们指定了"\2"和"\1". 这在Vim中被称作反向引用.
它们可以用来指代此前在\( \)中匹配的内容. "\2"指代在第二个"\(
\)"中匹配的内容, 也就是"First"部分, "\1"则指第一个\( \)中的内容,即"Last"
部分.

:iabbrev ad advertisement
每次键入"ad"时都自动扩展为"advertisement",可以用":iab"代替完整的命令名":iabbrev"
:abbreviations 命令可以列出当前定义的所有缩写
:unabbreviate + 缩写词替换词
命令可以用于删除一个缩写,但输入之后它还会再做一次替换才会生效。:abclear有同样的效果。
:abbreviate errword rightword 可以更正错误的输入
CTRL-V
命令可以保证你键入的下一个字符被原封不动地被录入(如特殊字符),支持ASCII,十六进制(前面加o),八进制输入(前面加x),16bit或32bit的数字(前面加u)
通过输入连续的三个键"CTRL-K加两个字母"可以键入键盘上没有的字符,用:digraphs可以查看可用的连字符
========================================================================================
CRTL-G 显示正在编辑的文件的详细信息
CTRL-U 使文本向下滚动半屏
CTRL-D 使文本向上滚动半屏
CTRL-E 使文本向上滚动一行
CTRL-Y 使文本向下滚动一行
CTRL-F 使文本向后滚动一整屏(实际上是整屏去两行)
CTRL-B 使文本向前滚动一整屏
CTRL-O 跳转到更早些时间停置光标的位置(提示: O意为older).
CTRL-I 跳回到后来停置光标的更新的位置(提示:
I在键盘上位于O前面,作用同<Tab>键)
"CTRL-P" 对于重复的输入,按下"CTRL-P",
Vim会根据已经输入的部分向前寻找,补全整个词
"CTRL-N" 对于重复的输入,按下"CTRL-N",
Vim会根据已经输入的部分向后寻找,补全整个词
CTRL-X CTRL-F 文件名
CTRL-X CTRL-L 整行内容
CTRL-X CTRL-D 宏定义(也包括那些在include文件里定义的宏)
CTRL-X CTRL-I 当前文件和被当前文件include的文件
CTRL-X CTRL-K 来自一个字典文件的word
CTRL-X CTRL-T 来自一个thesaurus的word
CTRL-X CTRL-] tags
CTRL-X CTRL-V Vim的命令行
用`complete`选项来定制Vim在补全word时所用的策略,使用`ignorecase`选项,在搜索匹配的word时忽略大小写的不同。`infercase`.
它使搜索
匹配的word时忽略剩余部分的大小写。
在插入模式下,CTRL-Y会复制上一行的字母内容到当前行的光标处。
在插入模式下,CTRL-E会复制下一行的字母内容到当前行的光标处。
========================================================================================
简单模式搜索:(使用正则表达式)
^ 字符匹配一行的开头,如"/^word"只匹配出现在一行开头的word
$ 字符匹配一行的末尾,如"/word$"只匹配出现在一行末尾的word
注:"/^the$",只会匹配到一行的内容仅包含"the"的情况. 有空白字符也不行
.
匹配除换行符外的任何单字符,如"/wo.d","."可以用"\."来匹配,在normal模式下也可用来做重复的动作,

标记跳转:
m{mark}
将当前光标下的位置名之为标记"mark".从a到z一共可以使用26个自定义的mark.
定义后的标记不在屏幕上显示,只在Vim内部记录所代表的位置
`{mark} mark就是你定义的标记的名字,如用"ma"标记"a"处,用"`a"跳转到标记a处
` 进行此次跳转之前的起跳点
``
上次编辑该文件时光标最后停留的位置,跳回到上一个的出发点,可以在两点之间来回跳转
[ 最后一次修改的起始位置
] 最后一次修改的结束位置
:marks 列出已经标记过的标记列表
:jumps 列出曾经跳转过的位置列表
/string
用于向下搜索一个字符串,用"n"可以继续查找下一个,用"N"可以继续查找上一个
?string
用于向上搜索一个字符串,用"n"可以继续查找下一个,用"N"可以继续查找上一个
* 把光标定位于某个word上,对当前光标所在的word向下搜索
# 把光标定位于某个word上
/\<word\> 精确搜索单词word
查找一个文件:把光标置于所要查找的文件名上,然后键入"gf".当这个文件并不在工作目录下时,Vim会用在`path`选项中定义的目录去查找它.
该选项的内容是一个以逗号分隔的目录名列表,格式为::set
path+=c:/prog/include.
或通过:find filename来查找。
或通过":sfind"命令来替代":find"命令,在新窗口中打开。
========================================================================================
set nocompatible "设置默认模式为普通vim模式"
set backspace=indent,eol,start
"在Insert模式下退格键何时可以删除光标之前的字符.
选项中以逗号分隔的三项内容分别指定了Vim可以删除位于行首
的空格, 断行, 以及开始进入Insert模式之前的位置"
:set ignorecase 忽略大小写匹配
:set noignorecase 大小写的精确匹配
:set number 在每行的前面显示一个行号
:set nonumber 关闭行号显示
:set ruler 开启右下角的光标位置显示
:set noruler 关闭右下角的光标位置显示
:set hlsearch 高亮显示搜索结果
:set nohlsearch 关闭高亮显示搜索结果
:nohlsearch 去掉当前的高亮显示
:set incsearch 在键入目标字符串的过程中就同时开始搜索
:set wrapscan 搜索过程在文件内部循环进行(默认)
:set nowrapscan 搜索过程在文件内部只进行一次
set autoindent "在开始一个新行时对该行施以上一行的缩进方式."
set history=50 "设置冒号命令和搜索命令的命令历史列表的长度"
set ruler "总是在Vim窗口的右下角显示当前光标的行列信息"
set showcmd "在Vim窗口的右下角显示一个完整的命令已经完成的部分"
set incsearch "在键入要搜索的字串的同时就开始搜索当前已经键入的部分"
map Q gq "定义了一个"Q"命令映射到"gq"操作符命令,进入Ex模式"
filetype on "自动识别文件类型"
plugin on
"用文件类型plugin脚本,对某种文件类型来说最常用的选项可以放在一个Vim中叫文件类型plugin的脚本里.请参考|write-filetype-plain|"
indent on "使用缩进定义文件,请参考jfiletype-indent-onj和°indentexpr°选项"
"autocmd FileType text setlocal textwidth=78 "
autocmd FileType text "是一个自动命令.
它所定义的是每当文件类型被设置为"text"时就自动执行它后面的命令."
setlocal textwidth=78
"在当前行已超过78个字符时,让Vim可以自动断行,这种设置只对当前的一个文件有效."
:options "打开选项帮助窗口"
:help `wrap` "获得选项关键字的详细解释"
:set iskeyword& "恢复一个选项值的默认设置"
:set nowrap "控制长行是否折到下一行显示的命令是"
:set sidescroll=10 "查看左右10个字符的上下文"
:set whichwrap=b,s
"控制移动光标移动到行首或行尾时的操作,光标位于行首时按退格键会往回移动到上一行的行尾.
同时在行尾按空格键也会移动到下 一行的行首"
:set whichwrap=b,s,<,> "左右箭头键在遇到行的边界时可以转行,在normal模式下"
:set whichwrap=b,s,<,>,[,]
"左右箭头键在遇到行的边界时可以转行,在Insert模式下"
:set list "设置制表符成为可见的字符"
:set listchars=tab:>-,trail:- "使制表符以">---"显示, 同时行尾空格以"-"显示"
:set iskeyword
iskeyword=@,48-57,_,192-255 >
"定义了一个word中可以包含哪些字符,"@"在这里代指所有的字母.
"48-57"指ASCII码从48到57的那些字符, 即0到9.
"192-255"是可打印拉丁字母,要去除一个字符使用操作符"-=",要添加一个字符使用操作符"+=""
:syntax enable "打开色彩"
:set background="/dark" "设置背景颜色为暗色(或light亮色)"
:colorscheme evening
"选择颜色方案(evening),其他颜色方案在$VIMRUNTIME/colors目录中"
:source $VIMRUNTIME/syntax/2html.vim "把当前文件转到HTML格式"
:set autowrite "每当需要时就自动保存,不需要过问"
:set noautowrite "每当需要保存时,就过问"
:set backup "生成备份文件"
:set backupext=.bak "重新命名备份文件的后缀为.bak" 备注:
如果°backup°选项是关闭的但°writebackup°选项是打开的,
Vim还会生成一个备份文件. 但是, 一旦该文件被成功地保存它就会被自动删除.
:set patchmode=.orig "对原始文件进行备份"
:set backupext=.old "指定对原始文件进行备份的后缀"
:write >> logfile "把当前文件的内容追加到logfile文件中"
:set fileformats=unix,dos "Vim能自动识别的格式的集合"
:set fileformat? "查看当前的文件格式,在vim中有三种格式,分别是:unix
<LF>;dos <CR><LF>和mac <CR>"
:edit ++fileformat=unix|dos|mac file.txt
"强制指定文件file.txt的格式为unix,dos或mac,++fileformat可荐絬为++ff"
把一个dos格式的文件转换成unix格式可以通过以下两步完成:
:set fileformat=unix
:write
:set showmatch
"键入"闭括号"时显示它与前面的哪个"开括号"匹配,对于大,中,小括号都适用"
:set matchtime=15
"设置键入某个闭括号时,等待时间的长短,时间单位是十分之一秒"
:set textwidth=30
限制每一行能有多少个字符。注:`wrap`选项使Vim能显示需要折行的过长的行,
但只是为了显示的需要, 并不在文件中实际插入一个换行符
:set autoindent "自动插入缩进"
>> "增加一行的缩进量"
<< "减少一行的缩进量"
:set shiftwidth=4
"设置缩进量增减的单位,但会得到一个8字符的缩进,可以通过:set
softtabstop=4来控制缩进"
:set tabstop=3 "设置制表符的字符长度"
:retab 8 "重置制表符的长度为8"

========================================================================================
多文本编辑:
:edit otherfilename "编辑另一个文件,但需要事先保存原文件"
:hide edit otherfilename "编辑另一个文件,不需要事先保存原文件"
vim one.c two.c three.c
"启动时就指定要编辑的多个文件,使用next,next!或wnext转到下一个文件,使用pervious或wpervious转到上一个文件,使用
last转到最后一个文件,使用first转到第一个文件使用args可以查看正在编辑的文件名"
:args 1.c 2.h 3.h "重新定义编辑的文件列表"
CTRL-^ "跳转到刚刚编辑过的文件"
`" "返回上次离开该文件时光标所在的位置"
`. "返回最后一次对文件做出改动处"
vim -R file 以只读方式打开文件,同"view file",但可以使用!强制执行。vim -
:saveas "把现有的文件另存为一个新文件"
:winheight "设置一个期望的最小的窗口高度. "
:winminheight "设置一个强制的最小高度"
:winwidth "指定期望的最小窗口宽度"
:winminwidth "强制的最小窗口宽度."
:equalalways
"在每次打开或关闭窗口Vim都自动让所有窗口均摊屏幕上可用的高度和宽度."
:split "分割一个窗口为两个,可以通过split
newfile在新窗口中打开newfile,可以使用CTRL-W来切换当前窗口,使用CTRL-w
+或-来改变窗口的大小,使用:close来关闭窗口,使用:only可以关闭除当前窗口外的其他窗口"
:new "打开一个新窗口并开始编辑一个新的缓冲区"
:vsplit "创建新窗口位于当前窗口的左边"
:vnew "用于垂直分隔窗口并在其中打开一个新的空缓冲区"
:set scrollbind "设置多窗口同步滚动"
:set noscrollbind "取消多窗口同步滚动"

CTRL-W j "切换窗口到下面的窗口"
CTRL-W k "切换窗口到上面的窗口"
CTRL-W h "切换窗口到左边的窗口"
CTRL-W l "切换窗口到右边的窗口"
CTRL-W t "切换窗口到顶部窗口"
CTRL-W b "切换窗口到底部窗口"

CTRL-W K "向上移动窗口"
CTRL-W J "向下移动窗口"
CTRL-W H "向左移动窗口"
CTRL-W L "向右移动窗口"

:qall "退出所有窗口"
:wall "保存所有窗口"
:wqall "保存并退出所有窗口"
:qall! "强制退出所有窗口"

vim -o(小) filename1,2,3... "为每个文件打开一个窗口,水平排列"
vim -o(大) filename1,2,3... "为每个文件打开一个窗口,竖直排列"
vimdiff filename1 filename2 ... "显示文件间的不同之处"
zo "展开层叠显示"
zc "收起层叠显示"
]c "直接向前定位到下一个不同之处"
[c "直接向后定位到下一个不同之处"
:diffupdate "重新比较两个文件"
========================================================================================
四、 visual 模式 (按"v"可以进入Visual模式)
CTRL-V 对矩形的文本块为对象进行操作
o (小)让光标置于被选中文本的对角,如果时单独一列,就是上下移动。提示: o
代表other end另一头)
O (大)让光标在同一行的左右两个角之间移动
p
(小)把放入缓存的内容放到当前光标后面(提示:p即put).3p,可以把三分放入当前光标后。
P (大)把放入缓存的内容放到当前光标前面.
y
(小)把文本复制到一个寄存器中,该寄存器为vim私有的。该命令是一个操作符命令,如:"yy"复制一整行,"y2w"复制两个word,包括后面的空白字符,"ye"复制一个word,不包括后面的空白字符,"y$"复制当前光标至行尾.
Y (大)复制一整行。
c (小)

========================================================================================
五、 replace模式(大写的"R"可以进入替换模式):
replace模式下的例外是按下回车键并不会把当前字符替换为回车, 而是插入一个回车
小节:
x 删除当前光标下的字符("dl"的快捷命令)
X 删除当前光标之前的字符("dh"的快捷命令)
D 删除自当前光标至行尾的内容("d$"的快捷命令)
dw 删除自当前光标至下一个word的开头
db 删除自当前光标至前一个word的开始
diw 删除当前光标所在的word(不包括空白字符)
daw 删除当前光标所在的word(包括空白字符)
dG 删除当前行至文件尾的内容
dgg 删除当前行至文件头的内容 (用"c"命令代替"d"这些命令就都变成更改命令)

~ 改变当前光标下字符的大小写, 并将光标移至下一个字符.
这不是一个操作符命令(除非你设置了°tildeop° 3选项),
所以你不能让它与一个位移命令搭配使用.
但它可以在Visual模式下改变所有被选中的文本的大小写.
I 将光标置于当前行第一个非空白字符处并进入Insert模式
A 当光标置于当前行尾并进入Insert模式
六、 其他东东
:edit . "编辑当前的目录,可用的选项有:
" <enter> : 打开一个文件或目录~
" o : 为文件或目录打开一个新的窗口~
" O : 在前一个被访问过的窗口中打开指定的文件/目录
" p : 预览文件/目录~
" i : 切换大小/日期的列表显示~
" s : 选择一个排序键r : 逆向排序~
" - : 进入父目录c : 进入目录
" R : 文件重命名D : 删除文件
" :help help-explorer得到更多信息~
<Enter> 使用当前的窗口
o 打开一个新窗口
O 使用最近使用过的其它窗口[[译: 如果只有当前窗口就打开新窗口]]
p 同O, 但同时还将光标定位于该窗口中
参考|preview-window|
i 切换显示文件的大小和日期/时间信息
s 光标所在的条目作为排序键进行排序. 首先用i命令打开
对文件大小和日期的显示. 然后将光标移到任一文件的大小
上按下s. 此时所有的文件都将按其大小进行排序. 光标置
于日期上时按s则会按其日期进行排序.
r 逆向排序当前的排序列表(either size or date)
c 将当前目录切换到当前光标所在的目录名. 接下来使用":edit"
命令时就无需附加路径名了
R 更改当前光标下的文件, Vim会提示你输入一个新的文件名[[译:
不支持目录更名]].
D 删除当前光标下的文件名. Vim也会提示你进行确认[[译: 不支持目录的删除]].
关于编程常用快捷键:
[ [ = 移动到前一个行首的'{'字符上, 等价于?^{
] ] = 移动到下一个行首的'{'字符上, 等价于/^{
[ ] = 移动到前一个行首的'}'字符上, 等价于?^}
] [ = 移动到下一个行首的'}'字符上, 等价于?^}
{ = 到前一个空行上
} = 到下一个空行上
gd = 到当前局部变量的定义处(当前的意思是光标停留其上的单词).
* = 到与当前单词相同的下一个单词上
# = 到与当前单词相同的上一个单词上
'' = 到上次光标停靠的行
ctags:
[/home/someuser/src]$ ctags * "以源程序目录下所有文件作为参数"
[/home/someuser/src]$ vi -t foo_bar
"在命令行上启动vi程序时通过-t选项加要跳转的程序元素名"
灾难恢复
vim -r
"Vim会读取交换文件(这正是存放你已编辑的文件的地方)以及你的原文件的一些信息."
|swap-file| "关于交换文件的位置和命名"
|preserve| "手工刷新交换文件"
|swapname| "查看原文件及其交换文件的名字"
`updatecount` "连续击键多少次后做一次同步"
`updatetime` "多长时间之后做一次同步"
`swapsync` "同步交换文件时是否同时做一次磁盘同步"
`directory` "列出存放交换文件的目录"
`maxmem` "尚未写入交换文件的内容所受的内存限制"
`maxmemtot` "同上, 但是针对所有文件."
========================================================================================
注意"o"和"O"在Visual模式与Normal模式下行为迥异, 在Normal模
式下它们是在当前行的下面或上面插入一个新行.
========================================================================================注:汉字的空格不被视为空白字符
要改变Vim对word边界的定义, 请查看°iskeyword°选项
用%处理哪些括号可以由`matchpairs`选项来定义与滚屏相关的命令, 请参考jQ
scj.若要一直保持当前行的前后都有一些内容显示在屏幕上,
请参考`scrolloff`选项.
问题:在使用*键时,但如果要匹配一小片包含了几个word的文本呢?如何避免手工键入?
答案: Visual select, yank, :let @/=@", n
在使用:set hlsearch时,如果排除函数外别处同名变量的干扰呢? 答: j/\%<3lj
限定
========================================================================================添加一个plugin
plugin是一个Vim会自动载入执行的脚本.
把一个脚本放入你的plugin目录即可。分为:全局的plugin,和文件类型plugin
全局的plugin:
在|standard-plugin-list|有一个此类plugin 的列表.
另外请参考|load-plugins|.在$VIMRUNTIME/macros下的脚本是全局的,且必需以".vim"为扩展名
文件类型plugin:
Vim的发布版中已经包括了针对不同文件类型的相应plugin, 你可以使用":filetype
plugin
on"命令开启对它的应用.在$VIMRUNTIME/ftplugin目录下的则是专用于特定文件类型的
一些帮助:
|filetype-plugins| 关于文件类型plugin的文档以及如何避免映射引起冲突的信息
|load-plugins| 关于Vim启动过程中何时载入全局plugin
|ftplugin-overrule| 如何强制改变全局plugin中的设置.
|write-plugin| 如何写一个plugin脚本.
|plugin-details| 关于如何使用plugin或者解决你的plugin出现的bug.
|new-filetype| 如何检测新文件类型
========================================================================================常用选项:
vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>
"让"p"可以在Visual模式下以此前yank的内容替换当前选择的文本块"
if has("vms")
set nobackup
else
set backup
endif 在覆盖一个文件之前备份该文件. 但是对VMS系统除外,
因为该系统已经为文件保存了老的版本. 备份文件名由当前文件名
加后辍"~"组成. 请参考|07.4|

if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif 打开语法高亮功能, 前提是当前系统支持彩色显示.
`hlsearch`告
诉Vim高亮显示所有与最后一次搜索目标串相匹配的文本

autocmd BufReadPost *
\ if line("°\"") > 0 && line("°\"") <= line("$") |
\ exe "normal g`\"" |
\ endif 检查是否定义了标记"2,
如果定义了就跳转到这个位置去.
每一行前面的反斜杠表示该行是前一行命令的延续. 它可以避免
脚本中有些行变得过长

深度理解 extern "C"

1.引言
  C++语言的创建初衷是"a better
C",但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为"不彻底地面向对象"),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {

你的C/C++基本功是否扎实?

我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
1.找错题
  试题1:
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}
  试题2:
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
  str1 = 'a';
 }
 strcpy( string, str1 );
}
  试题3:
void test3(char* str1)
{
 char string[10];
 if( strlen( str1 ) <= 10 )
 {
  strcpy( string, str1 );
 }
}
  解答:
  试题1字符串str1需要11个字节才能存放下(包括末尾的'\0'),而string只有10个字节的空间,strcpy会导致数组越界;
  对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string,
str1)调用使得从str1[url=]内存[/url]起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分;
  对试题3,if(strlen(str1) <= 10)应改为if(strlen(str1) <
10),因为strlen的结果未统计'\0'所占用的1个字节。
  剖析:
  考查对基本功的掌握:
  (1)字符串以'\0'结尾;
  (2)对数组越界把握的敏感度;
  (3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:
2. 编写一个标准strcpy函数
2分
void strcpy( char *strDest, char *strSrc )
{
  while( (*strDest++ = * strSrc++) != '\0' );
}
4分
void strcpy( char *strDest, const char *strSrc )
//将源字符串加const,表明其为输入参数,加2分
{
  while( (*strDest++ = * strSrc++) != '\0' );
} 
7分
void strcpy(char *strDest, const char *strSrc)
{
 //对源地址和目的地址加非0断言,加3分
 assert( (strDest != NULL) && (strSrc != NULL) );
 while( (*strDest++ = * strSrc++) != '\0' );
}
10分
//为了实现链式操作,将目的地址返回,加3分!
char * strcpy( char *strDest, const char *strSrc )
{
 assert( (strDest != NULL) && (strSrc != NULL) );
 char *address = strDest;
 while( (*strDest++ = * strSrc++) != '\0' );
  return address;
}
  从2分到10分的几个答案我们可以清楚的看到,小小的strcpy竟然暗藏着这么多玄机,真不是盖的!需要多么扎实的基本功才能写一个完美的strcpy啊!
  (4)对strlen的掌握,它没有包括字符串末尾的'\0'。
  读者看了不同分值的strcpy版本,应该也可以写出一个10分的strlen函数了,完美的版本为:
int strlen( const char *str ) //输入参数const
{
 assert( strt != NULL ); //断言字符串地址非0
 int len;
 while( (*str++) != '\0' )
 {
  len++;
 }
 return len;
}
试题4:
void GetMemory( char *p )
{
 p = (char *) malloc( 100 );
}
void Test( void )
{
 char *str = NULL;
 GetMemory( str );
 strcpy( str, "hello world" );
 printf( str );
}
试题5:
char *GetMemory( void )
{
 char p[] = "hello world";
 return p;
}
void Test( void )
{
 char *str = NULL;
 str = GetMemory();
 printf( str );
}
试题6:
void GetMemory( char **p, int num )
{
 *p = (char *) malloc( num );
}
void Test( void )
{
 char *str = NULL;
 GetMemory( &str, 100 );
 strcpy( str, "hello" );
 printf( str );
}
试题7:
void Test( void )
{
 char *str = (char *) malloc( 100 );
 strcpy( str, "hello" );
 free( str );
 ... //省略的其它语句
}
  解答:
  试题4传入中GetMemory( char *p
)函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL;
GetMemory( str );
  后的str仍然为NULL;
  试题5中
char p[] = "hello world";
return p;
  的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。
  试题6的GetMemory避免了试题4的问题,传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句
*p = (char *) malloc( num );
  后未判断内存是否申请成功,应加上:
if ( *p == NULL )
{
 ...//进行申请内存失败处理
}
  试题7存在与试题6同样的问题,在执行
char *str = (char *) malloc(100);
  后未进行内存是否申请成功的判断;另外,在free(str)后未置str为空,导致可能变成一个"野"指针,应加上:
str = NULL;
  试题6的Test函数中也未对malloc的内存进行释放。
  剖析:
  试题4~7考查面试者对内存操作的理解程度,基本功扎实的面试者一般都能正确的回答其中50~60的错误。但是要完全解答正确,却也绝非易事。
  对内存操作的考查主要集中在:
  (1)指针的理解;
  (2)变量的生存期及作用范围;
  (3)良好的动态内存申请和释放习惯。
  再看看下面的一段程序有什么错误:
swap( int* p1,int* p2 )
{
 int *p;
 *p = *p1;
 *p1 = *p2;
 *p2 = *p;
}
  在swap函数中,p是一个"野"指针,有可能指向系统区,导致程序运行的崩溃。在VC++中DEBUG运行时提示错误"Access
Violation"。该程序应该改为:
swap( int* p1,int* p2 )
{
 int p;
 p = *p1;
 *p1 = *p2;
 *p2 = p;
}
3.内功题
  试题1:分别给出BOOL,int,float,指针变量与"零值"比较的 if
语句(假设变量名为var)
  解答:
   BOOL型变量:if(!var)
   int型变量: if(var==0)
   float型变量:
   const float EPSINON = 0.00001;
   if ((x >= - EPSINON) && (x <= EPSINON)
   指针变量:  if(var==NULL)
  剖析:
  考查对0值判断的"内功",BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。
 一般的,如果想让if判断一个变量的"真"、"假",应直接使用if(var)、if(!var),表明其为"逻辑"判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行"数值"上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。
  浮点型变量并不精确,所以不可将float变量用"=="或"!="与数字比较,应该设法转化成">="或"<="形式。如果写成if
(x == 0.0),则判为错,得0分。
  试题2:以下为Windows NT下的32位C++程序,请计算sizeof的值
void Func ( char str[100] )
{
 sizeof( str ) = ?
}
void *p = malloc( 100 );
sizeof ( p ) = ?
  解答:
sizeof( str ) = 4
sizeof ( p ) = 4
  剖析:
  Func ( char str[100]
)函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。
  数组名的本质如下:
  (1)数组名指代一种数据结构,这种数据结构就是数组;
  例如:
char str[10];
cout << sizeof(str) << endl;
  输出结果为10,str指代数据结构char[10]。
  (2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;
char str[10];
str++; //编译出错,提示str不是左值 
  (3)数组名作为函数形参时,沦为普通指针。
  Windows NT 32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof(
str ) 、sizeof ( p ) 都为4。
  试题3:写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?
least = MIN(*p++, b);
  解答:
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
  MIN(*p++, b)会产生宏的副作用
  剖析:
  这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的"参数"也不是真的参数,在宏展开的时候对"参数"进行的是一对一的替换。
  程序员对宏定义的使用要非常小心,特别要注意两个问题:
  (1)谨慎地将宏定义中的"参数"和整个宏用用括弧括起来。所以,严格地讲,下述解答:
#define MIN(A,B) (A) <= (B) ? (A) : (B)
#define MIN(A,B) (A <= B ? A : B )
  都应判0分;
  (2)防止宏的副作用。
  宏定义#define MIN(A,B) ((A) <= (B) ? (A) : (B))对MIN(*p++,
b)的作用结果是:
((*p++) <= (b) ? (*p++) : (*p++))
  这个表达式会产生副作用,指针p会作三次++自增操作。
  除此之外,另一个应该判0分的解答是:
#define MIN(A,B) ((A) <= (B) ? (A) : (B));
  这个解答在宏定义的后面加";",显示编写者对宏的概念模糊不清,只能被无情地判0分并被面试官淘汰。
补充:
#include <filename.h> 和 #include "filename.h" 有什么区别?
答:对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h
对于#include "filename.h" ,编译器从用户的工作路径开始搜索 filename.h
  试题4:为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {