一站式安装 X终端全家桶 | XShell Xstp Xmanager | 官方渠道 | 破解

前言

由 NetSarang 公司推出的一系列终端模拟软件:XShell、Xftp、XManager 提供了强大且安全的远程终端模拟功能,是 Windows 平台上比较强大的终端模拟软件之一,几乎是开发者必备软件之一。众所周知该软件分为 评估版本、家庭/学校免费版、激活码注册收费版,而破解往往需要基于激活码注册收费版。

激活码收费版的链接没有在官网明确标示,网上流传的大都也是评估版或是家庭学校免费版,本文就介绍一种通过官方渠道获取 Xmanager PowerSuit 的方法,之后介绍利用激活软件激活软件的方法。

官方下载

第一步、打开netsarang公司的官方中文网站,https://www.netsarang.com/zh/all-downloads,选择 Xmanager PowerSuit 下载。

https://imagehost-cdn.frytea.com/20200813111300.png

第二步、选择试用版本,姓名随便填写,但是邮箱一定要填写正确,用于接收下载链接。

https://imagehost-cdn.frytea.com/20200813111405.png

第四步、用谷歌浏览器(或者其他浏览器)打开邮箱中的链接,会开始下载,此时右键复制下载链接。

https://imagehost-cdn.frytea.com/20200813111511.png

第五步、在复制的下载链接版本后尾部添加 r ,下载即可。例如:

## 原始地址
https://cdn.netsarang.net/7940ce13/XmanagerPowerSuite-6.0.0029.exe
## 替换地址(即官方注册版下载链接)
https://cdn.netsarang.net/7940ce13/XmanagerPowerSuite-6.0.0029r.exe

破解方法

第一步、卸载机器上已经安装的Xmanager Power Suite 6或者低版本的Xmanager Power Suite。(旧版本残留会导致激活失败)

第二步、打开注册机 NetSarang_AIO_8in1_Keygen_v1.5_DFoX.exe

注册机可以在互联网上自己寻找,或是在本站资源站下载:

Frytea‘s res:http://res.frytea.com/Dev/终端软件/NetSarang_AIO_8in1_Keygen_v1.5_DFoX.exe

第三步、当需要输入序列号时,填写注册机生成的激活码

生成方法:打开注册机,Products选择”Xmanager PowerSuite”,首先点击“Fix Host + Register”,然后点击“Generate”

https://imagehost-cdn.frytea.com/images/2020/08/14/image052caec6b7f9bf1f.png

之后填入安装程序;

https://imagehost-cdn.frytea.com/images/2020/08/14/Snipaste_2020-08-13_11-23-470aa927cb123e6600.png

第四步、继续安装,结束后查看激活状态

如果软件启动时出现如下界面,记得点 否 ,否则可能出现激活失败!

https://imagehost-cdn.frytea.com/images/2020/08/14/imageae77283a9e12e5a7.png

貌似也没有什么影响,出现之后重新激活即可。

之后随便进入一个软件,查看关于。

https://imagehost-cdn.frytea.com/images/2020/08/14/imageefe489118e4ea935.png

激活成功!

注:如果重启激活失败,开启激活程序,重新修复host,再执行在线激活,重启软件即可。一次不行多激活几次。

参考文献

VMware 安装运行 deepin 虚拟机 | 体验中国深度

一、安装步骤

第一步,准备系统镜像

镜像在官网下载即可。

深度官网:https://www.deepin.org/zh/

第二步,创建虚拟机

在Vmware Wordstation 中新建一个虚拟机,选择标准安装即可,镜像直接加载刚刚下载好的镜像即可,在选择客户机操作系统时选择 Ubuntu 64 位。

https://imagehost-cdn.frytea.com/20200810161927.png

硬件选择时按照自己的需求给定硬件资源,官网教程给定的最低资源限制如下:

  • 处理器:Intel Pentium IV 2GHz 或更快的处理器
  • 内存:至少 2G 内存(RAM),4G 以上是达到更好性能的推荐值
  • 硬盘:至少 25 GB 的空闲空间(实测建议最少64GB,128GB更佳)

https://imagehost-cdn.frytea.com/20200810162014.png

第三步,运行安装

开启虚拟机,下面基本就是一路下一步,首先选择好语言;

https://imagehost-cdn.frytea.com/20200811015726.png

之后选择安装位置,选择刚刚分配的磁盘即可,如果磁盘空间小于 64 GB 可能会弹出警告,要求最少64GB,在这里我没有测试低于 64GB 能否安装。

https://imagehost-cdn.frytea.com/20200813092738.png

之后一路等待安装结束,重启进入系统即可!

https://imagehost-cdn.frytea.com/20200813092810.png

第四步,enjoy it!

https://imagehost-cdn.frytea.com/images/2020/08/13/image2ff1cd0c342fcbd5.png

下面这段内容,就是在deepin系统中完成的。

二、实用性分析

深度操作系统,亦称为deepin,原名Hiweed Linux及Linux deepin,是武汉深之度科技有限公司开发的开源操作系统。它是基于Debian的稳定版本的一个Linux发行版。它可以运行在个人计算机和服务器上,并免费提供给个人用户使用。deepin因其美观和易用性而广受赞誉。据DistroWatch的数据,截至2017年,deepin是最受欢迎的源自中国的Linux发行版。2019年,华为开始销售预装有深度操作系统的笔记本电脑。

结合当前美国技术封锁带来的极其不利于中国本土发展的形势,中国人必须做好两手准备。虽然 Windows 操作系统市场占有率极高,且绝大多数人已经习惯了使用windows,但基于以下几点原因,我认为国人必须减少对windows的依赖,必要时迁移至当前可用性极高的 deepin 系统。

1、中国的发展势必会受到各种阻碍

从美国强制科技企业斷供华为,到后面华为不得不宣布麒麟芯片“绝版”,不难看出某些国家迫切想要置中国科技于死地,他们不允许中国比他们更先进。他们习惯了掌控世界的感觉,习惯了技术领先时的那种随心所欲;他们接受不了中国超越自己,更接受不了中国的技术渗透进曾今独属于自己的领域。因此他们必将使用一切手段限制中国;一旦发生这样的事情,中国人发展所依赖的一切都将成为致命武器。此时唯有自力更生、自给自足才能在这个纷繁的世界之中立足。

2、深度系统更符合中国人使用习惯

Windows 系统由于其通用性,在很长一段时间之中占有绝对高的市场,加上电脑游戏玩家对于windows平台的依赖,windows系统长期渗透中国人生活的方方面面。但抛开其他因素,windows系统的操作逻辑、配色风格等并不符合中国人的使用逻辑:

  • 比起高对比度色块,大部分中国人更偏爱清新简约的配色风格
  • 比起复杂难懂的设置名称,中国人更需要一个简单能用的平台
  • 比起大多服务位于海外的系统,中国人更需要服务国有化平台

    现在是开始体验中国深度的最佳时刻,用户量是滋养软件产品的唯一源泉。这篇文章简单描述了在虚拟平台上安装深度操作系统,大家可以在此体验深度,评估深度替换自己日常生活的可能性。如果有必要,我后面会写文章介绍深度之上的种种工作场景。

    最后说一句,中国不缺开发者,缺的是软件生态。如果中国有这样一款产品,一间公司,可以打造出一整套健壮发展的生态,必将有一番作为。

参考文献

《让你的时间更有价值》十句感悟

让你的时间更有价值:空闲时间就是你的未来财富(微信阅读独家首发) 张萌 萌姐 共51个笔记

与萌姐第一次“遇见”是在那一本《精力管理手册》,后来那本书成为了我毕业设计重要理论依据之一,成为“规划助手”app设计的重要参考资料。在日程规划方法的设计中,参考了大量《精力管理手册》中的内容,这本书也是当时极少有的,单讲精力的一本书。除此之外还有一本《精力管理》也对我产生了极大的影响。

读完这本《让你的时间更有价值》,感觉到许多认知被刷新,文中提及一个很重要的词——抓手。

我将阅读这本书记下的笔记,浓缩成十句话,带你领略这本书的精华之处。

壹 · 逆袭

本书的核心内容是“你的人生可以逆袭。”,而要实现这一点,首先要解决两个问题

  • 解决信心不足的问题:想让自己活得更好和相信自己一定能活得更好,不是一回事儿。
  • 解决目标不明的问题:把努力比作打靶,有的人是在黑暗中闭着眼睛瞎打,这是黑着打。有的是边打边摸索,根据结果不断调整打法,这是摸着打。有的人却是眼明心亮,瞄准了靶子再打,这就是瞄着打。想要成功逆袭,我们需要的就是“瞄着打”这种高明的打法。

https://imagehost-cdn.frytea.com/20200808210540.png

贰 · 成长

随着人们生活条件越来越好,人的寿命也在不断拉长。年龄并不是障碍。最近火热的几部电视剧,三十而已,二十不惑,名字还真挺有意思。因此人们无论在什么年龄段,都是可以奋斗出一片天地的。

奋斗的人生才是有意义的,困难之中才能感受到真的快乐。

进入公司,无论是哪一家公司,都很缺少能干事情、会成长的精英,书中提到华为和阿里两家公司,“但是他们对职场精英的要求却是一致的:那就是不断学习,终生成长,保持自己的职业竞争力。这样个人跟公司才能同步发展,共同成长”。

改变永远都不会来不及,也永远不存在不可能。

https://imagehost-cdn.frytea.com/20200808210623.png

叁 · 勤奋

人们喜欢以勤奋或是不勤奋来衡量一个人努力程度,普遍的认为勤奋的人一定是努力的,而努力一定是有收获的,其实并不是。

努力不一定有回报,勤奋也不一定就是努力。

说这句话并不是说让人们都不要努力,而是要放弃这种“低水平努力”。

书中有一节标题就是“ 低水平的勤奋换不来高质量的生活”,而“挣钱绝对是只有少数人才能做到的事情”。

奶奶对我说过“钱是硬头货”。确实,钱这东西或许谁都喜欢,但并不是谁都能赚到。

不能把钱看的太重,但它是一切的基础。

能赚到钱的人,是什么样的人呢?书里给出的答案是——他们都是一些聪明的努力者。

要想成为这样“聪明的努力者”,作者给出的一条路:“我之前的一本书《加速:从拖延到高效》,讲的就是我这些年作为高水平、高效率勤奋倡导者总结和提炼的系统心法”。

而“所谓高水平的勤奋就是,通过一整套系统中的思维升级、方法论和辅助工具,让自己以同样的努力取得数倍的回报”。

综上,不难发现,勤奋也是要有方法的,不能只顾赶路,否则大概率会掉沟里。

https://imagehost-cdn.frytea.com/20200808210747.png

肆 · 人脉

书中用了很大篇幅讲述人脉的重要性,标题为“用成长带动成长,用人脉开启助力”。为什么人脉这么重要,文中给出一个例子:一次一个技术大拿遇到一个技术难题,好几个月解决不了,最后解决了,技术大拿却很不是滋味,为什么呢?

“因为这个问题的解决是受了刚来公司还不到一个月的实习生的启发。这让他这个技术大拿有一种颜面扫地的感觉。不过,从那次风波以后,他真的发生了很大的改变”。

其实,一个人解决的事情难免有限,但如果能够汇集许多人的力量,就可以成就一片大海。

一个人再怎么努力都不可能解决所有的技术问题。但是如果是一帮很厉害的人,那就有可能了。我要让这些比我还优秀的人成为我的‘外挂’,这种开挂的感觉简直不要太好呀!

反观当下人们的人脉关系。也许在自己的人脉中,大部分都是一些以某一主题为核心的小圈子。这样的人脉关系在解决某一领域的问题会显得得心应手。

但一旦开始创业,或是转行。需要做的工作,从某一领域,变成多个维度。这样单一圈子的弊端就会显露无疑。人们可以在自己领域找到很厉害的人,但是很难跨界认识到其他领域的牛人。而如今的大数据算法,在一定程度上恶化了这一现象。

大数据背景下的算法推荐会让我们的视野变得越来越窄,变现思维下的圈子、圈层会让我们的社交和人脉变得越来越窄。 这样的单一圈层会有什么样的后果呢?我在新书《从受欢迎到被需要》中提到类似的案例,最直接的就是人员优势的极度单一。

由此不难发现,任何事情都有利有弊。在人脉这件事情上,就需要人们敢于打破常规,去看到更大的世界。

https://imagehost-cdn.frytea.com/20200808210902.png

伍 · 改变

铺垫了这么多,终于到实践了。谈了这么多理论,如何实施呢?首先第一步,树立信心。

要想成事,必须得坚信这件事能成。

无论任何事情,都要先自信,自信可以完成,才有可能做成。虽然困难是客观存在的,但困难就是要被自信克服掉的。有了自信,第二步就是刷新认知。

“不管是什么行业,也不论是什么人,我们都是通过认知来挣钱的,我们挣的都是认知的钱。” 如果不改变一个人的认知,你就不可能让他的人生发生任何变化。

如果认知不变化,就永远停在原地。人类相较其他生物先进之处就在于思想认知。而认知水平决定了人的高度。

信心和认知,是改变的前提。

当我们想要分享一些东西给别人的时候,或者是想要跟别人一起做些什么的时候,我们首先要做的就是改变他的认知,把双方的认知调到同一个频次。

如果认知不发生改变,我们就容易陷入一些陷阱。比如自我设限。

正因为他们的过去都有值得骄傲的地方,现在从零开始他们觉得有些跌份儿,但是又不好意思明说,所以只能报以这种不失礼貌的微笑。但是能读懂这笑容的人都知道,他们是被自己的过去束缚住了。

其实许多原地踏步,并不是能力问题,而是自我束缚。

破除自我束缚,还要记得多看看路。

只知道低头拉车,从来不会抬头看路,这样翻车的可能性是非常高的

保证自己不翻车,然后还要从多个维度去思考问题。

昨天的自己、当下的自己和未来的自己所代表的是我们看待问题时三个不同的角度,以及考虑问题时的三个维度。 这就是立体化的思维,立体化的思维要求在面对同一个问题时,至少能够从三个不同的角度展开思索。

思考昨天,是为了复盘;思考今天,是为了活下去;思考明天,是为了改变!

https://imagehost-cdn.frytea.com/20200808211123.png

陆 · 新知

希望现在的你,已经在路上、或是准备在路上。

为了让自己持续改变,就必须要持续获取新知识。获取新知识的方法有三种方法:

  • 行走
  • 读书
  • 交友

走到更多的地方,增加阅历;读万卷书、行万里路;听君一句话,胜读十年书!

在人类几千年的历史长河中,我们遇到的问题,大概率早有人遇到过。而前人走过的路,对我极具参考意义。

你当下遇到的问题,可能早就有人经历过,并成功地找到了解决的方法。你需要做的就是找到这个人,并向他请教。

坚持获取新知,然后不断输出。未来,掌控在输出者手中。

https://imagehost-cdn.frytea.com/20200808211206.png

柒 · 落地

刷新认知的目的,是为了最终实现。因此让新知识落地,找到自己的方法尤其重要。

赚钱主要靠模式,而模式要符合人性。看懂人性然后再按照整个基本逻辑找自己的模式,才是最靠谱的变现方式。

找到自己的方法、模式、路子,然后去不断实践、修正。这就是认知创造的价值。如果没有自己的想法,就会永远被人牵着鼻子走!

想要掌控自己的人生,就要尝试绘制人生的蓝图。而要检验自己的人生蓝图,也很简单:

就是三个问题,分别是:我为谁?解决了什么问题?提供了什么方法?

其实这个世界很简单,只是有时候被复杂化了。可人们,不总是在重复着由简到繁,再由繁到简的过程吗。

https://imagehost-cdn.frytea.com/20200808211339.png

捌 · 需求

人性的本质就是一切行为皆是源自自身的需求。

有需求的地方,就有交易。这两台呢回到郑州,研究着给自己的matebook装个黑苹果。跟朋友聊到这件事,朋友说了这么一句话“只要有需求,就一定有人去实现”。与之对应的还有一句话“这件事就在这里,你不做总会有人做”。而活在世上,找到人生价值。恰恰就是通过满足人类的需求而实现的。

需求可以分层次,但是应用不能分层次,在产品满足实际需求相差不大的情况下,要学会通过满足体验取得胜利;牢记没有无欲无求的人,也不存在不能搞定的人,只要牢记马斯洛需求理论就总能找到突破口,一切行为皆是源自自身需求;搞定人必须从对方的需求入手,从利他开始换一种方式搞定人才是可循之道。

在这个快时代,做事的速度一定要快。

我们要想做事最好就是在红利期切入,在暴利期崛起,在微利期突围,在无利期到来之前完成下一个周期的开始。

刷新认知,就可以挖掘出更多需求。全新的领域,更容易做出成绩。

无门槛时代,敢比会更重要。

勇敢的去做吧。选择之前深思熟虑,选择之后一路向前。

https://imagehost-cdn.frytea.com/20200808211518.png

玖 · 助力

刷新了认知,掌握了需求,有了自己的方法,下面就是找到自己的“助推器”。

人脉的核心标准有两个,第一是可变现。第二是双向性,这个可变现必须是双向的。

通过多元化的人脉,可以迅速将想法变成现实。而如何去拥有这样的人脉,大致就是先让自己成为一个被需要、被信赖的人。

人脉的本质就是价值变现,而变现的基本逻辑就是利他思维。 靠谱的人在人际交往中最难得。

在人际交往中可以注意以下几点:

  1. 诚信第一。说到必须做到。
  2. 懂得拒绝。做不好的事情不如不做,如有必要把能做好事情的人介绍给他。
  3. 主动反馈。让对方随时了解事情的进展,没有问题也要告知,有问题更要提前告知,好让别人有所准备。
  4. 守住边界,热心而不冒失。如怕别人不好意思开口,帮忙之前务必询问对方的意见。
  5. 不主动索要回报,但不要拒绝对方给出的回报。适当的回报既是对自己的约束,也是给对方一个定心丸,同时也不至于伤害对方的尊严。

https://imagehost-cdn.frytea.com/20200808211643.png

拾 · 影响

影响力是一个很重要的属性,能力越大、责任越大。想让自己的时间更值钱,就必定需要扩大影响力。

重视影响力属性的人,处一段关系就开一扇门,他的世界是开放的。而不重视影响力属性的人,凭自己的好恶,处一段关系建一堵墙,他的世界是封闭的。

而影响力属性常伴随着价值观。

相同的价值观能够让人迅速变成同一类人,而同类人之间的相互助力是可以不太看重价值兑付的。所以,价值观是在价值锚点之外又一个特别重要的人脉变现利器。

通过价值观去寻找同类人,再通过影响力提升自己的价值。其实本质的规律常常很简单。想要不断的提升,可以常常去做复盘。书中给出了一些复盘模型,其中针对知识性内容的复盘可以参考:

知识复盘需要回答的三个问题: 通过学习收获了哪些新知? 通过学习改变了哪些旧有的认知? 通过学习如何把这些新知运用到实践当中?

通过复盘,让自己快速成长,增强自信、刷新认知,察觉需求,结合认知变成现实从而满足需求,借助人脉助力,提升自己的影响力。最终,时间的价值被提升。

https://imagehost-cdn.frytea.com/20200808212014.png

计算机基础之位运算 | 按位取反

程序中的所有数在计算机内存中都是以二进制的形式储存的。位操作是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。(摘自维基百科)

位运算对CPU很友好,是一种程序优化手段,也是大厂面试中常常会提及的话题。在日常的编程中用到为运算,也是可以实现许多有趣的事情的。作为一名计算机相关专业的毕业生,居然到现在还没有用过位运算,简直是耻辱。于是最近恶补相关知识,在此简单记录。

位运算符包括取反、按位或、按位异或、按位与;对于比特位还可以进行移位,左移运算,向左进行移位操作,高位丢弃,低位补 0;右移运算,向右进行移位操作,对无符号数,高位补 0,对于有符号数,高位补符号位。

众所周知,在 C/C++ 中一个 char 类型的变量在内存中占据1个字节,即8比特,其实每一个比特位都可以当作一个开关来用,以此来做标志位等。

基础位运算符

下面记录一下各种位运算符操作:

  • & 与运算 两个位都是 1 时,结果才为 1,否则为 0,如
  1 0 0 1 1
& 1 1 0 0 1
------------------------------
  1 0 0 0 1
  • | 或运算 两个位都是 0 时,结果才为 0,否则为 1,如
  1 0 0 1 1
| 1 1 0 0 1
------------------------------
  1 1 0 1 1
  • ^ 异或运算,两个位相同则为 0,不同则为 1,如
  1 0 0 1 1
^ 1 1 0 0 1
-----------------------------
  0 1 0 1 0
  • ~ 取反运算,0 则变为 1,1 则变为 0,如
~ 1 0 0 1 1
-----------------------------
  0 1 1 0 0
  • << 左移运算,向左进行移位操作,高位丢弃,低位补 0,如
int a = 8;
a << 3;
移位前:0000 0000 0000 0000 0000 0000 0000 1000
移位后:0000 0000 0000 0000 0000 0000 0100 0000
  • >> 右移运算,向右进行移位操作,对无符号数,高位补 0,对于有符号数,高位补符号位,如
unsigned int a = 8;
a >> 3;
移位前:0000 0000 0000 0000 0000 0000 0000 1000
移位后:0000 0000 0000 0000 0000 0000 0000 0001

int a = -8;
a >> 3;
移位前:1111 1111 1111 1111 1111 1111 1111 1000
移位前:1111 1111 1111 1111 1111 1111 1111 1111

以上展示的是位操作中的基本运算符,使用这些基本运算、利用二进制一些性质可以实现诸如快速乘除法、交换两数、判断奇偶、求绝对值、高低位交换、逆序、快速统计1的个数等操作。

以统计二进制中1的个数为例,计算 34520 二进制中的1个数:

我们计算其 a &= (a-1) 的结果:

  • 第一次:计算前: 1000 0110 1101 1000 计算后: 1000 0110 1101 0000
  • 第二次:计算前: 1000 0110 1101 0000 计算后: 1000 0110 1100 0000
  • 第二次:计算前: 1000 0110 1100 0000 计算后: 1000 0110 1000 0000

容易发现,每计算一次二进制中就少了一个 1,则我们可以通过下面方法去统计:

count = 0  
while(a){  
  a = a & (a - 1);  
  count++;  
}

容易发现,善用位运算可以极大提高运算效率,由于计算机中存储和处理都是采用二进制,因此位运算也是很符合计算机处理逻辑的。

按位取反

除了以上计算,还有一种按位取反计算,下面简单记录:

在进行按位取反之前,首先需要了解一下原码、补码、反码、取反。

  • 原码:
    • 正数是其二进制本身;
    • 负数是符号位为1,数值部分取X绝对值的二进制。
  • 反码:
    • 正数的反码和原码相同;
    • 负数是符号位为1,其它位是原码取反。
  • 补码:
    • 正数的补码和原码,反码相同;
    • 负数是符号位为1,其它位是原码取反,未位加1。(反码末尾减1)(或者说负数的补码是其绝对值反码未位加1)
  • 取反就是简单的 0变1,1变0 ;

而按位取反需要涉及以上概念。要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。

下面以计算正数 9 的按位取反为例,计算步骤如下(注:前四位为符号位):

- 原码   : 0000 1001
- 算反码 : 0000 1001 (正数反码同原码)
- 算补码 : 0000 1001 (正数补码同反码)
- 补取反 : 1111 0110 (全位0变1,1变0)
- 算反码 : 1111 0101 (末位减1)
- 算原码 : 1111 1010 (其他位取反)

总结规律: ~x = -(x+1)

针对按位取反的总结到此结束,但是按位取反的用途,目前博主知识有限,欢迎大家补充!

按位取反和取反的区别:

在c语言中 ! 代表逻辑取反,即把所有非0的数值(相当于1)变为0,0变为1; ~ 表示按位取反,即在数值的二进制表示方式上,将0变为1,将1变为0;

参考文献

《任正非传》十句摘录

孙力科著 共36个笔记

华为近几年在世界范围内掀起的浪潮相信每个人都看在眼里,随着华为成功,其掌舵者任正非也成为当今中国企业家中避不开的一位。在此之前只知道任总是军人出身,学习很好,很有远见,对于各种困难的处理颇有大将风度。看完这本书,从字里行间认识到到任总有着极强的个人魅力。从华为选择研发交换机这一领域获得第一桶金,到后来打入非洲市场、欧洲市场、美国市场,再到后面与行业巨头思科的“世纪之讼”,再到后来“后院起火”,跌宕起伏之中令人产生不少疑惑,也对任总打心底里的佩服。

https://imagehost-cdn.frytea.com/20200802225859.png

书中讲了华为是走投无路的产物,讲到华为对于研发的态度,讲到华为面对西方巨头傲慢态度时的应对办法,又讲到华为内部骨干员工离开华为“另立山头”时任总的处理方式,还讲了华为的体制改革、股份制度改革,到最后的“狼性”文化,以及华为的新时代。全书跌宕起伏,十分精彩。今天就列举出十句,或令人印象深刻,或令人深思,或有所启发的摘录笔记,希望对您也有一些启发。

最近base六朝古都南京,熟悉新环境做一些封闭开发的工作,时间比较紧张。走过夫子庙、总统府、南京博物馆、明故宫、中山陵。我看到的是一座发达的南京,活跃的南京,又有些“纠结”的南京。南京的资源和繁荣程度令一些城市望尘莫及,可又给人一种微微的“距离感”。在此期间断断续续看完《任正非传》,对于阅读和中华有为有了一些新的看法。下面就请允许我随着摘录笔记的步伐,说说我的想法。

壹

全书 第一章 标题 “谁是任正非?”,讲到任总的出身和名字来历,任总“出生在贵州安顺地区镇宁县,祖籍在浙江金华”。其父 “任摩逊希望自己的儿子在以后的人生中能明辨是非,成为一个对社会有价值的人。“任正非”的名字,也就这样落定了”。其母 “程远昭身上有着典型的中国优秀女性的特质:勤劳、耐苦、慈爱、不服输”。看到这里想到几位有幸认识的极优秀的女性,积极向上乐观还勤奋,母性的伟大之处也许就在于无条件的给予。

https://imagehost-cdn.frytea.com/20200802225935.png

贰

任总大学毕业后选择开始了一段 军旅生涯 。“他理工基础雄厚,掌握了数门外语,而且文科实用水平颇高,对毛泽东思想有着自己深刻的理解”。但学习成就优异的他并不是一切顺风顺水。“虽然由于父亲的背景原因,任正非在军队中除了一个“学毛著标兵”的口头嘉奖之外,再没有得到任何实质性的嘉奖,但正是这些看起来的遗憾,让他养成了淡泊名利、宠辱不惊的心态。”

凡是皆有两面性,任谁也把控不好这个度,凡事看起来是坏事也许是好事。或许就是那时看似“不公正”的待遇,造就了任总成就今天华为一个很重要的精神品质——淡泊名利。

https://imagehost-cdn.frytea.com/20200802230023.png

反观当今的青年,是不是在面对一些不公的事情,总是会有所波动。此时想想上一代人,都经历过怎么样的痛苦,或许现在的这一点苦也就不算什么了。

叁

华为这样一家优秀的企业,是如何诞生的呢?或许真的是平凡到不能再平凡。刚开始的华为,没有什么资产或是基础,有的可能只是想要改变现况的热情。在 华为诞生记 一章中讲到华为当时调研了解到 “当时市面上的交换机种类繁多,程控交换机是其中使用价值最高的,同时,它对技术的要求也最高,需要投入的经费也最多。这种程控交换机可以用于企事业单位内部的沟通,甚至还能展开长途交流“。了解到这些关键因素的华为,在程控交换机领域投入了巨大的力量进行研发。

https://imagehost-cdn.frytea.com/20200802230114.png

虽然这一过程是曲折的,但是结果确实是令华为一跃到达世界先进水平。其实在此之前选择交换机这一领域,也是极其具有战略性眼光的。说到这里不得不佩服任总的眼光和头脑,在那样一个时代是如何想到去做这样一个几乎没有国产企业去做的行业。

肆

其实华为选择交换机这一行业并非一帆风顺,在全书 第二章 踏上新征程 中说到 ”1991年,任正非等到了机会。这一年,邬江兴首次研发出万门级的04数字程控交换机,获悉消息后任正非大受鼓舞。纵使这个“第一”的殊荣不是他的,不是华为的,但属于中国,属于一个崭新的时代!任正非从邬江兴的成功中看到了中国人在通信行业中逆袭的可能。邬江兴的经历与任正非特别相似。他是解放军信息工程学院的院长,比任正非小10岁。他和任正非一样是军人出身,同样对“中国人永远无法造出大型程控交换机”的断言嗤之以鼻。“

https://imagehost-cdn.frytea.com/20200802230157.png

当时在数字程控交换机领域遇到不小的技术阻力,但国人的成果令大家再次看到希望。也不难看出信心,对于一个人乃至一家企业有多重要。

伍

成功的开始,都是从模仿开始的。”这年秋天,任正非带着一队企业骨干踏上了去美国考察的征程。一路考察,任正非有了不同的感受。美国的汽车乘坐起来更加舒适,看到的楼宇也更高,他的感叹虽不至于像明治维新的股肱臣僚岩仓具视和他远赴欧美参观的使节团那般“始惊、次醉、终狂”夸张,但也同样对美国的科技成就发出感慨:我国的国土与美国基本相当,但荒漠、大山、高原面积大,余下的土地承载着十几亿国民。加之缺少教育经费,文化素质偏低,人口增长快,田边地角均被挖空,何来的草地、山林呢?“

走访美国,任总感触颇深,最后得出一个结论:“越繁荣就越发展科技,越发展科技、越重视教育就越人才辈出,越人才辈出,经济就越繁荣,如此走入一个良性的循环圈……美国将经久不衰。”

https://imagehost-cdn.frytea.com/20200802230338.png

抛开民族主义和感性因素,对于人才的重视程度,真的就决定了能走多远。中国正在改变,希望真的有一天,好的想法就能得到认同和支持。

陆

大家看到了华为今日的繁华,但是在此之前少不了困难和挫折,在 第三章 华为新起点 中就记录了一些华为面对挫折时的应对态度,”任正非说,他不会以一时的成败来论英雄;华为的企业文化,其精髓不在于百战百胜,而在于在战局不利的状况下培养出风险抗拒能力。显然,正是这种抗拒能力,成为华为至今仍能在国际市场上如鱼得水的重要原因”。

https://imagehost-cdn.frytea.com/20200802230428.png

就算再今天,一件事情做不好换来的一定就是责骂,但若是能有更多更有用的方式,也许会更好。解决心理障碍、找准难点所在,然后一齐攻关,找到对的人,很关键。

柒

当华为的产品在国内已有一席之地,甚至在非洲、欧洲都有了不错的口碑之后,华为在进军美国市场时遇到了不小的阻碍,面对困难,华为明白自己的处境 “毕竟华为的产品已经成为中国通信产品体系中的代表,华为在美国栽跟头,其余的中国产品也许就没有再战的勇气了。为了稳住军心,任正非给出了最高指示:“敢打才能和,小输就是赢。”。

初次较量华为占尽略施,甚至于国内一切媒体也站到敌手思科那边,这时的任总意识到媒体舆论的重要性。“任正非则从华为的立场出发,言明“自己没有上市,公司上税、守法,对客户和员工负责就可以了,华为不需要抛头露面,针对外界的各种说法华为也从不解释”。令人意想不到的是,在这场角逐中,一些中国媒体也站在了思科这边,这着实让人为华为担忧。要想建立一个国际化的大型企业,不单需要革新市场、优化产品,更需要加强与媒体之间的联系,并在全球范围内广泛结交同盟,团结一切可以团结的力量,以便在与对手直面竞技时随时应对”。”

https://imagehost-cdn.frytea.com/20200802230514.png

也许就是困难教会人前行,在挫折中教会成长。在一阵阵的阵痛之中,不断成长。

捌

虽然开局并不顺利,但“身正不怕影子斜”,这就是自信。目光长远的人一定会认真对待身边的一切,不会轻易的“划水”。

华为取得“最好的结果”之后哦 再接再厉。“吸引了全世界目光的“世纪之讼”在双方的战略妥协下落下幕布。思科保住了世界通信霸主的地位,从此不再趾高气扬;华为在美国市场上有了一席之地,并因这场大战让全世界刮目相看。从此,不论是美国还是东半球的国家,都愿意和华为做生意,华为在国际市场的业务量开始出现令人可喜的翻番式增长态势”。

https://imagehost-cdn.frytea.com/20200802230553.png

中国人,你要自信。扎实细节,高调做事。就是要有这种自信。

玖

成长的路上,就是不断的变化。随着华为的不断成长,其公司制度存在的一切漏洞也不断被暴露。于是有了这一出 财务转型记。

任总认识到“财务管理地位极重,小到每一个产品的定价评估和成本计算、大到企业在一段发展时期内的收支盈亏等,没有财务的参与,都是行不通的。在华为的年度报表中,一组数据更显示出了财务危机:2003年,华为的利润率还保持着较高的19%,可到了2007年骤降为7%;2003年的净利润率保持在14%,2007年则下降至不到5%。经过讨论,任正非和众人得出这样的结论:要继续向IBM公司学习,不单要学习IPD等管理模式,更要在财务方面借鉴经验弥补不足”。

https://imagehost-cdn.frytea.com/20200802230616.png

人们就是要在不断学习中成长,终身学习。

拾

华为之所以能够取得今天的成果,一个很重要的因素就时 以人为本 。

“若从时代的角度出发,促使华为一步步迈向制高点的最关键因素则在于对人才的培养和提拔。不单是任正非,几乎所有的华为人都这样认为:销售是一段刻骨铭心的经历。没有销售的人生是不完整的。美国著名企业管理学者沃伦·本尼斯曾说:“员工培训是企业风险最小、收益最大的战略性投资。”任正非重视对员工的培训,就等于从根本上避免了风险,获取了收益。一位管理者最推崇任正非的一句话就是:“烧不死的鸟才是凤凰。”

https://imagehost-cdn.frytea.com/20200802230831.png

从领导者到研发人员,抢夺人才就是抢夺未来。一直到今天,华为都是高薪的象征。不但抢夺人才,华为还热衷于 “制造”精英 。

”根据二战名将曼施坦因的分析,军队中最不需要的高级干部就是这种“不聪明而勤奋”的人,因为他们没有开创的思维和前卫的意识。能力和智慧不出众,越是兢兢业业,越会对整个团队造成危害“。一次任总送皮鞋给两位研发部负责人。”见老总将皮鞋送给自己,两位主管万分尴尬。任正非不是在送礼,而是通过皮鞋这个媒介提醒他们:你们动的脑子很多,这很好,但可惜你们走的路真的是太少了!“

引用指导老师的告诉我们的一句话,”低头做事的同时别忘了抬头看路“。

未来

”云计算的地位并不亚于“互联网+”。有人曾预料,云计算的广泛应用,甚至能够将现代信息产业引领到一个崭新的时代。这是“第三次IT技术革命”,有着非同寻常的意义“。华为意识到这一点,并”后来居上“。云计算在今天已经渗透到人们生活的方方面面,或许这就是下一个风口。

读完这本书,发现阅读也是一件很看”缘分“的事情。每每阅读到深刻之处不免感觉全身激动,每一寸肌肉都在触动。有些内容却只是草草掠过留个映像。或许未来的某一天,此情此景,突然想到这句话。

或许阅读,就是帮助更深刻的走过人生路。

如果喜欢,我会继续做”十句阅读“这个栏目,希望优秀的内容,能帮到您。

解决拉取github仓库报错“gnutls_handshake() failed”问题

本文首发于:https://blog.frytea.com/archives/421/

gnutls_handshake() failed: The TLS connection was non-properly terminated.

最近为新配置的虚机拉取库,但是从 GitHub 拉取库总是出问题,查阅网上文献将问题锁定在代理,但是找了一圈还是没有找到答案。

经过仔细排查,发现还是由于代理设置有错,为 http 错误配置了 https 的代理,导致出错。

如果没有配置代理,可使用以下命令 取消代理 :

git config --global --unset http.proxy
git config --global --unset https.proxy

如果需要使用 代理 , http 协议通过以下命令配置,使用 7890 端口为例:

git config --global http.https://github.com.proxy http://127.0.0.1:7890
git config --global https.https://github.com.proxy https://127.0.0.1:7890

socket 协议通过以下命令配置,使用 7890 端口为例:

git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

也可以这样子 仅代理 GitHub :

git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
#取消代理
git config --global --unset http.https://github.com.proxy

拓展阅读

Vim安装插件管理器Vundle

安装vundle

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

默认安装在/.vim/bundle/vundle下;

配置说明:

插件有三种类型:

  1. Github上vim-scripts仓库的插件
  2. Github上非vim-scripts仓库的插件
  3. 不在Github上的插件 对于不同的插件,vundle自动管理和下载插件的时候,有不同的地址填写方法,有如下三类:
  1. 在Github上vim-scripts用户下的仓库,只需要写出repos(仓库)名称
  2. 在Github其他用户下的repos, 需要写出”用户名/repos名”
  3. 不在Github上的插件,需要写出git全路径

配置vundle插件:

可以在终端通过vim打开~/.vimrc文件,

$ vim ~/.vimrc

将以下加在.vimrc文件中,加入之后保存之后就可以使用vundle了。

添加的配置信息(样例)注:以后安装新插件就直接编辑vimrc,添加plugin就行了,在这里我们添加的plugin只是例子,你可以不安装这些插件,换上自己需要安装的插件。

set nocompatible              " 去除VI一致性,必须要添加
filetype off                  " 必须要添加

" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')

" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'

" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
Plugin 'ascenator/L9', {'name': 'newL9'}

" 你的所有插件需要在下面这行之前
call vundle#end()            " 必须
filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
"
" 常用的命令
" :PluginList       - 列出所有已配置的插件
" :PluginInstall     - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
"
" 查阅 :h vundle 获取更多细节和wiki以及FAQ
" 将你自己对非插件片段放在这行之后

安装需要的插件

  1. 将想要安装的插件,按照地址填写方法,将地址填写在vundle#begin和vundle#end之间就可以
  2. 保存之后,有两种方法安装插件。

(1) 运行 vim ,再运行 :PluginInstall

$vim
:PlugInstall

(2) 通过命令行直接安装 vim +PluginInstall +qall

vim +PluginInstall +qall

安装完成之后,插件就可以使用。

移除不需要的插件

  1. 编辑.vimrc文件移除的你要移除的插件所对应的plugin那一行。
  2. 保存退出当前的vim
  3. 重新打开vim,输入命令BundleClean。

其他常用命令

  1. 更新插件BundleUpdate
  2. 列出所有插件BundleList
  3. 查找插件BundleSearch

参考文献

Ubuntu下为vim安装YouCompleteMe插件

前提条件

安装

第一步,使用Vundle安装YouCompleteM

在.vimrc中添加以下内容

Plugin 'Valloric/YouCompleteMe'

然后拉取源码(或是 :PluginInstall 也可)

$ cd ~/.vim/bundle
#./install.py需要克隆,不能直接下载zip压缩包
$ git clone https://github.com/Valloric/YouCompleteMe.git

第二步,拉取依赖(包括可能用到的工具)

$ cd YouCompleteMe
$ git submodule update --init --recursive
$ sudo apt install cmake
$ sudo apt install clang
$ sudo apt-get install python3-dev

第三步,安装代码提示

# 仅安装支持Python的版本:
$ ./install.py

# 安装支持C语言家族的版本:
$ ./install.py --clang-completer

# 安装支持go语言的版本:
$ ./install.py --go-completer

# 安装支持Js、Java、Python、go所有语言的版本:
$ ./install.py --all

第四步,添加.vimrc配置

$ vim .vimrc
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'

第五步,测试

[]()

参考文献

VIM 创建程序文件自动添加头部注释

修改 /etc/vimrc 或 ~/.vimrc,在文件最后添加以下内容:

" 当新建 .h .c .hpp .cpp .mk .sh等文件时自动调用SetTitle 函数
autocmd BufNewFile *.[ch],*.hpp,*.cpp,Makefile,*.mk,*.sh exec ":call SetTitle()"
" 加入注释 
func SetComment()
        call setline(1,"/*================================================================")
        call append(line("."),   "*   Copyright (C) ".strftime("%Y")." IEucd Inc. All rights reserved.")
        call append(line(".")+1, "*   ")
        call append(line(".")+2, "*   文件名称:".expand("%:t"))
        call append(line(".")+3, "*   创 建 者:SongTL, songtianlun@comleader.com.cn")
        call append(line(".")+4, "*   创建日期:".strftime("%Y年%m月%d日"))
        call append(line(".")+5, "*   描    述:")
        call append(line(".")+6, "*")
        call append(line(".")+7, "================================================================*/")
        call append(line(".")+8, "")
        call append(line(".")+9, "")
endfunc
" 加入shell,Makefile注释
func SetComment_sh()
        call setline(3, "#================================================================")
        call setline(4, "#   Copyright (C) ".strftime("%Y")." IEucd Inc. All rights reserved.")
        call setline(5, "#   ")
        call setline(6, "#   文件名称:".expand("%:t"))
        call setline(7, "#   创 建 者:SongTL, songtianlun@comleader.com.cn")
        call setline(8, "#   创建日期:".strftime("%Y年%m月%d日"))
        call setline(9, "#   描    述:")
        call setline(10, "#")
        call setline(11, "#================================================================")
        call setline(12, "")
        call setline(13, "")
endfunc
" 定义函数SetTitle,自动插入文件头 
func SetTitle()
        if &filetype == 'make'
                call setline(1,"")
                call setline(2,"")
                call SetComment_sh()

        elseif &filetype == 'sh'
                call setline(1,"#!/system/bin/sh")
                call setline(2,"")
                call SetComment_sh()

        else
             call SetComment()
             if expand("%:e") == 'hpp'
                  call append(line(".")+10, "#ifndef _".toupper(expand("%:t:r"))."_H")
                  call append(line(".")+11, "#define _".toupper(expand("%:t:r"))."_H")
                  call append(line(".")+12, "#ifdef __cplusplus")
                  call append(line(".")+13, "extern \"C\"")
                  call append(line(".")+14, "{")
                  call append(line(".")+15, "#endif")
                  call append(line(".")+16, "")
                  call append(line(".")+17, "#ifdef __cplusplus")
                  call append(line(".")+18, "}")
                  call append(line(".")+19, "#endif")
                  call append(line(".")+20, "#endif //".toupper(expand("%:t:r"))."_H")

             elseif expand("%:e") == 'h'
                call append(line(".")+10, "#pragma once")
             elseif &filetype == 'c'
                call append(line(".")+10,"#include \"".expand("%:t:r").".h\"")
             elseif &filetype == 'cpp'
                call append(line(".")+10, "#include \"".expand("%:t:r").".h\"")
             endif
        endif
endfun

使用效果:

https://imagehost-cdn.frytea.com/20200720192515.png

参考文献

VIM个性化配置(一)

配置

只需在Home目录创建一个 ~/.vimrc 文件即可以配置 vim 了,如需安装插件,在 ~/.vim 目录下创建一个bundle文件夹,插件装在里面。(需安装 Vundle 插件管理器),将以下内容拷入~/.vimrc 文件中即可。

vim ~/.vimrc
set nocompatible
filetype on

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" 这里根据自己需要的插件来设置,以下是我的配置 "
"
" YouCompleteMe:语句补全插件
set runtimepath+=~/.vim/bundle/YouCompleteMe
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口"
let g:ycm_collect_identifiers_from_tags_files = 1           " 开启 YCM基于标签引擎
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释与字符串中的内容也用于补全
let g:syntastic_ignore_files=[".*\.py$"]
let g:ycm_seed_identifiers_with_syntax = 1                  " 语法关键字补全
let g:ycm_complete_in_comments = 1
let g:ycm_confirm_extra_conf = 0                            " 关闭加载.ycm_extra_conf.py提示
let g:ycm_key_list_select_completion = ['<c-n>', '<Down>']  " 映射按键,没有这个会拦截掉tab, 导致其他插件的tab不能用.
let g:ycm_key_list_previous_completion = ['<c-p>', '<Up>']
let g:ycm_complete_in_comments = 1                          " 在注释输入中也能补全
let g:ycm_complete_in_strings = 1                           " 在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 " 注释和字符串中的文字也会被收入补全
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_show_diagnostics_ui = 0                           " 禁用语法检查
inoremap 
<expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"             " 回车即选中当前项
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>     " 跳转到定义处
let g:ycm_min_num_of_chars_for_completion=2                 " 从第2个键入字符就开始罗列匹配项
"

" github 仓库中的插件 "
Plugin 'VundleVim/Vundle.vim'

Plugin 'vim-airline/vim-airline'
"vim-airline配置:优化vim界面"
"let g:airline#extensions#tabline#enabled = 1
" airline设置
" 显示颜色
set t_Co=256
set laststatus=2
" 使用powerline打过补丁的字体
let g:airline_powerline_fonts = 1
" 开启tabline
let g:airline#extensions#tabline#enabled = 1
" tabline中当前buffer两端的分隔字符
let g:airline#extensions#tabline#left_sep = ' '
" tabline中未激活buffer两端的分隔字符
let g:airline#extensions#tabline#left_alt_sep = ' '
" tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1
" 映射切换buffer的键位
nnoremap [b :bp
<CR>
nnoremap ]b :bn
<CR>
" 映射
<leader>num到num buffer
map 
<leader>1 :b 1<CR>
map 
<leader>2 :b 2<CR>
map 
<leader>3 :b 3<CR>
map 
<leader>4 :b 4<CR>
map 
<leader>5 :b 5<CR>
map 
<leader>6 :b 6<CR>
map 
<leader>7 :b 7<CR>
map 
<leader>8 :b 8<CR>
map 
<leader>9 :b 9<CR>

" vim-scripts 中的插件 "
Plugin 'taglist.vim'
"ctags 配置:F3快捷键显示程序中的各种tags,包括变量和函数等。
map 
<F3> :TlistToggle<CR>
let Tlist_Use_Right_Window=1
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_WinWidt=25

Plugin 'The-NERD-tree'
"NERDTree 配置:F2快捷键显示当前目录树
map 
<F2> :NERDTreeToggle<CR>
let NERDTreeWinSize=25 

Plugin 'indentLine.vim'
Plugin 'delimitMate.vim'

" 非 github 仓库的插件"
" Plugin 'git://git.wincent.com/command-t.git'
" 本地仓库的插件 "

call vundle#end()

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件,自动插入文件头 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
""定义函数SetTitle,自动插入文件头 
func SetTitle() 
    "如果文件类型为.sh文件 
    if &filetype == 'sh' 
        call setline(1, "##########################################################################") 
        call append(line("."), "# File Name: ".expand("%")) 
        call append(line(".")+1, "# Author: TL Song") 
        call append(line(".")+2, "# mail: songtianlun@frytea.com") 
        call append(line(".")+3, "# Created Time: ".strftime("%c")) 
        call append(line(".")+4, "#########################################################################") 
        call append(line(".")+5, "#!/bin/zsh")
        call append(line(".")+6, "PATH=/home/edison/bin:/home/edison/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/work/tools/gcc-3.4.5-glibc-2.3.6/bin")
        call append(line(".")+7, "export PATH")
        call append(line(".")+8, "")
    else 
        call setline(1, "/*************************************************************************") 
        call append(line("."), "    > File Name: ".expand("%")) 
        call append(line(".")+1, "  > Author: TL Song") 
        call append(line(".")+2, "  > Mail: songtianlun@frytea.com") 
        call append(line(".")+3, "  > Created Time: ".strftime("%c")) 
        call append(line(".")+4, " ************************************************************************/") 
        call append(line(".")+5, "")
    endif
    if &filetype == 'cpp'
        call append(line(".")+6, "#include
<iostream>")
        call append(line(".")+7, "using namespace std;")
        call append(line(".")+8, "")
    endif
    if &filetype == 'c'
        call append(line(".")+6, "#include<stdio.h>")
        call append(line(".")+7, "")
    endif
    "   if &filetype == 'java'
    "       call append(line(".")+6,"public class ".expand("%"))
    "       call append(line(".")+7,"")
    "   endif
    "新建文件后,自动定位到文件末尾
    autocmd BufNewFile * normal G
endfunc 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"键盘命令
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

nmap 
<leader>w :w!<cr>
nmap 
<leader>f :find<cr>

" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
map 
<F12> gg=G
" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""实用设置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置当文件被改动时自动载入
set autoread
" quickfix模式
autocmd FileType c,cpp map 
<buffer> <leader><space> :w<cr>:make<cr>
"代码补全 
set completeopt=preview,menu 
"允许插件  
filetype plugin on
"共享剪贴板  
set clipboard=unnamed 
"从不备份  
set nobackup
"make 运行
:set makeprg=g++\ -Wall\ \ %
"自动保存
set autowrite
set ruler                   " 打开状态栏标尺
set cursorline              " 突出显示当前行
set magic                   " 设置魔术
set guioptions-=T           " 隐藏工具栏
set guioptions-=m           " 隐藏菜单栏
"set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldcolumn=0
" set foldmethod=indent 
set foldlevel=3 
set foldenable              " 开始折叠
"使用语法高亮定义代码折叠
set foldmethod=syntax
"打开文件是默认不折叠代码
set foldlevelstart=99
" 不要使用vi的键盘模式,而是vim自己的
set nocompatible
" 语法高亮
set syntax=on
" 去掉输入错误的提示声音
set noeb
" 在处理未保存或只读文件的时候,弹出确认
set confirm
" 自动缩进
set autoindent
set cindent
" Tab键的宽度
set tabstop=4
" 统一缩进为4
set softtabstop=4
set shiftwidth=4
" 不要用空格代替制表符
set noexpandtab
" 在行和段开始处使用制表符
set smarttab
" 显示行号
set number
" 历史记录数
set history=1000
"禁止生成临时文件
set nobackup
set noswapfile
"搜索忽略大小写
set ignorecase
"搜索逐字符高亮
set hlsearch
set incsearch
"行内替换
set gdefault
"编码设置
set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
"语言设置
set langmenu=zh_CN.UTF-8
set helplang=cn
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 总是显示状态行
set laststatus=2
" 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 侦测文件类型
filetype on
" 载入文件类型插件
filetype plugin on
" 为特定文件类型载入相关缩进文件
filetype indent on
" 保存全局变量
set viminfo+=!
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 字符间插入的像素行数目
set linespace=0
" 增强模式中的命令行自动完成操作
set wildmenu
" 使回格键(backspace)正常处理indent, eol, start等
set backspace=2
" 允许backspace和光标键跨越行边界
set whichwrap+=<,>,h,l
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 通过使用: commands命令,告诉我们文件的哪一行被改变过
set report=0
" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\
" 高亮显示匹配的括号
set showmatch
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
" 为C程序提供自动缩进
set smartindent
" 高亮显示普通txt文件(需要txt.vim脚本)
 au BufRead,BufNewFile *  setfiletype txt
"自动补全
:inoremap ( ()
<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {
<CR>}<ESC>O
":inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []
<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""
<ESC>i
:inoremap ' ''
<ESC>i
function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\
<Right>"
    else
        return a:char
    endif
endfunction
filetype plugin indent on 
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

效果预览:

https://imagehost-cdn.frytea.com/20200726191412.png

后续步骤