Ⅰ 学习web前端要注意什么工作中最常用的技术是什么怎样着手学更快
都说前端入门低,想学好前端绝对不容易,可以说现在前端所需要掌握的技能超过后端和以往,新技术概念层出不穷,到底所谓的前端都应该干些什么都应该会写什么呢?
本人身边有太多的人会切几张图, 会用jQuery做个特效, 会从bootstrap里复制粘贴, 会用html游戏框架写个flappy bird, 会在Github里找各种模板自和库拼拼凑凑, 就口口声声大言不惭的称自己为前端工程师. 说什么前端好简单啊, 前端找工作好难啊, 没有出路啊, 想转行啊. 甚至有更多的人还不明白什么是HTML, 就到处问(知乎里尤其多)怎么开始学前端啊, 前端前景好不好啊. 依照本人的经验, 什么东西难不难, 什么东西好不好, 可不是这样问出来的. 我相信在这在这种网络信息资源及其丰富的年代, 花个半小时自行搜索一下你应该可以得到你想要的答案.
好了言归正传, 前端工程师真的是一个无关紧要的职位么? 我们先来看看前端工程师都要做些什么, 看看那些称自己是'所谓'的前端同学们都能走到哪一步.
这里直接跳过最基本的HTML+CSS+JS, 包括但不仅限于:
- HTML各种element怎么用什么时候用?
- Event? EventLitsener? HTML中触发event以及JS中处理event?
- DOM tree? 添加? 修改? 删除? 搜索? 遍历? 选择? children? parent? sibling?
- 什么是window? 什么是document?
- JS基本语法? function? loop&condition? scope&closure? array&object? this?
- CSS 什么是box modal? position? float? 各种选择器(*, >, ~, :nth-child)?
如果看到这里有任何一项完全没听说过没用过, 或者查各种文档后'大概'知道怎么用的同学们, 很遗憾, 你们现在算不上是一个合格的前端工程师. 如果不是, 请继续.
### 程序员的基本素质和知识
(有些人觉得前端不同于传统意义上的程序员, 这点我十分不赞同. 或许把前端工程师叫做JS程序员更加贴切, HTML和CSS就好比其他语言中的UI库)-
- 高数, 基本的概率统计 (连简单的微分方程都不会解的朋友们就不要称自己为前端人员了!)
- 基本数据结构 能用JS写出linked list, stack, queue, (binary)tree, graph, hashtable么?
- 基本算法 能用JS实现各种search(linear, binary..), 各种sort(bubble, insertion, merge, quick, selection), 以及树的搜索(Breadth First/Depth First)和遍历(3种顺序)么?
- 设计模式 知道什么是singleton, factory, strategy, decrator么?
- Git 不要只是停留在把Github当做一个网络储存器的层面上, 知道branch, diff, merge么?
- 基本的英语能力(不要求听说, 只用来读/写文档资料)
- 基本的计算机知识 知道位运算, 溢出, thread, lock, concurrency, parallelism么?
- 熟悉unix的基本命令么? 知道ssh public/private key都是干嘛的么?
- 知道正则么? 能够熟练的使用么?
- 能写出详细的注释/文档, 让阅读你代码的人知道你要干嘛么? 能短时间内快速地读懂来自你同事或者其他地方(github, blog)的代码, 知道什么东西应该写在什么地方, 以便迅速地参与其中么?
- 给你一个你从来没有接触过的库/语言, 能能够在较短的时间内在你的代码里正确使用么?
- 有一个得心应手用的熟练地编辑器/IDE么? 不要求大家都是vim/emacs大神, 但也不要做什么都是用鼠标来点.
- 基本的检索查询能力(google, stackoverflow, MDN)
- 单独思考解决问题的能力, 团队合作, 与人相处
如果以上的内容都有所了解(这里不会强调精通), 恭喜你, 你拥有了成为前端工程师的基础知识. 继续.
### 前端专业知识
- 知道什么是AMD, COMMONJS么? 知道call, apply, bind么? 知道JS中foreach, filter, some, every么? 知道怎么实现functional JS(curry等)么?
- 知道各种所谓的高级HTML的API(File, Web Audio, WebSocket)么?
- 知道各种CSS Preprocessors么? 能讲出他们各自的优点和缺点么? 熟悉并且会用其中的一种么?
- 知道各种CSS框架么? 能讲出他们各自的优点和缺点么? 熟悉并且会用其中的一种么?
- 知道canvas, SVG么?
- 知道怎么把你的东西做成responsive, cross-browser support么?
- 知道什么是SEO并且怎么优化么? 知道各种meta data的含义么?
- 知道什么是Ajax, restful, get, post么? 知道怎么和后台交互么?
- 知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)么? 能讲出他们各自的优点和缺点么? 熟悉并且会用其中的一种或多种么?
- 知道什么是webkit么? 知道怎么用浏览器的各种工具来调试和debug代码么?
- 知道现在前端一般的工作流程(gulp, grunt, git, svn, npm)么?
- 知道怎么测试代码么? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
- 知道前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用么?
- 知道npm, V8, node, express, socket么? (这里补充一点, 现在越来越多的公司都采用: '前端网页 -> 前端后台 -> 后台'这种构架来搭建东西, 也就是说, 前端工程师不仅要做传统前端的网页, 还要写自己的后台, 来跟真正的后台进行交互, 至于前端的后台用什么语言来写, 一般是node/python/ruby, 不太会用到庞大的java, 所以这里我把node列为前端工程师必须要掌握的技能之一) 知道cache, authentication么?
- (如果要用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
- 另外, 前端这个行业跟传统的c/c++/java程序员还是有一定的差别的. 由于是新兴产业, 所以各种行业标准, 框架, 库会随时随地的产生和更新 (作为一个c程序员, 十年前怎么写东西现在还是怎么写东西). 今天出了node和react, 明天又出了io和mean. 所以, 积极关注各种前端产品, 跟上变化的节奏, 也是身为一个前端程序员必备的技能之一. 知道ECMAScript 6里怎么写class么? 知道react, flux, reflux么? 知道polymer, dart么? 知道meteor么?
以上是摘自知乎某大牛的文章=====
感觉对新人挺打击的,不过理清从大体上重新认识前端对学习理解也有一定帮助,只要自己想好了就坚持下去,学前端的最重要的随时学习能力,应该前端领域知识面涵盖太广,很多技术也不成熟,正在发展中,只能不停学习各种新技术新知识。。能分辨哪些技术是必须掌握的,哪些是少数人创造用来提”升逼格“的概念,能把PS+HTML+CSS+js玩熟,会一两个框架,懂点设计。就可以了
Ⅱ Linux下进行Java web开发比较流行用什么IDE
java的ide就那么几种比较流行,eclipse,netbeans,idea。
linux下有些大神用emacs,vim.
Ⅲ 用emacs做什么,不用emacs做什么(一种实用主义观点)
既是实用主义观点,那是否成立在很大程度上取决于个人实际情况。
在windows & linux下用emacs编辑简单的,但却包含基于文本的表格的笔记
不用emacs编辑需要复杂表现方式的文档(用正儿八经的字处理程序)
不用emacs访问web(用正儿八经的浏览器)
不用emacs当邮件客户端(所有的邮件本地客户端都在衰亡)
不用emacs进行Java项目的开发(用eclipse)
不用Make进行项目管理
在windows下不用emacs进行C++项目的开发(用visual C++)
在linux下 用emacs进行C++项目的开发
用emacs访问man page
不用emacs访问shell
不用emacs当桌面(没见过emacs的窗口你还当windows的WS_OVERLAPPED多此一举)
在windows & linux下用word写论文
不用latex写论文
用word给投稿论文排版
用latex给定稿论文排版
用endnote在word中管理文献引用
不用word自带的文献引用管理
用synctoy同步照片、电子书
Ⅳ 如何在WEB网页上编写程序调用海康威视webcomponents插件显示图像
具体编写操作如下:
1.打开WEB,图中示例为一个显示一组随机数组的程序,程序名称为ex14.c。编写完成后,同时按下键盘的【alt】和字母【X】键。
Ⅳ 流行词“博客”是什么意思
什么是“博客”?
blog的全名应该是Web log,中文意思是“网络日志”,后来缩写为Blog,而博客(Blogger)就是写Blog的人。从理解上讲,博客是“一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式”。简单的说博客是一类人,这类人习惯于在网上写日记。
Blog是继Email、BBS、ICQ之后出现的第四种网络交流方式,是网络时代的个人“读者文摘”,是以超级链接为武器的网络日记,是代表着新的生活方式和新的工作方式,更代表着新的学习方式。具体说来,博客(Blogger)这个概念解释为使用特定的软件,在网络上出版、发表和张贴个人文章的人。
一个Blog其实就是一个网页,它通常是由简短且经常更新的帖子所构成,这些张贴的文章都按照年份和日期倒序排列。Blog的内容和目的有很大的不同,从对其他网站的超级链接和评论,有关公司、个人构想到日记、照片、诗歌、散文,甚至科幻小说的发表或张贴都有。许多Blogs是个人心中所想之事情的发表,其它Blogs则是一群人基于某个特定主题或共同利益领域的集体创作。
随着Blogging快速扩张,它的目的与最初的浏览网页心得已相去甚远。目前网络上数以千计的 Bloggers发表和张贴Blog的目的有很大的差异。不过,由于沟通方式比电子邮件、讨论群组更简单和容易,Blog已成为家庭、公司、部门和团队之间越来越盛行的沟通工具,因为它也逐渐被应用在企业内部网络(Intranet)中。
博客的历史
最早,是由Jorn Barger在1997年12月提出博客这个名称。但是在1998年,互联网上的博客网站却屈指可数。那时,Infosift的编辑Jesse J.Garrett想列举一个博客类似站点的名单,便在互联网上开始了艰难的搜索。
终于在1998年的12月,他的搜集好了部分网站的名单。他把这份名单发给了Cameron Barrett,Cameron觉得这份名单非常有用,就将它在Camworld网站上公布于众。其它的博客站点维护者发现此举后,也纷纷把自己的网址和网站名称、主要特色都发了过来,这个名单也就日渐丰富。到了1999年初,Jesse的“完全博客站点”名单所列的站点已达23个。
由于Cameron与Jesse共同维护的博客站点列表既有趣又易于阅读,吸引了很多人的眼球。在这种情况下,Peter Merholz宣称:“这个新鲜事物必将引起大多数人的注意。作为未来的一个常用词语,web-blog将不可避免地被简称为blog,而那些编写网络日志的人,也就顺理成章地成为blogger——博客”。这代表着博客被正式命名。
随着博客数量的增多,每个博客网站上编写的网络日志的内容也混杂起来,以至把每一个新出的站点主要内容和特色都不可能搞清楚。Cameron后来就只在网站上登载熟悉的博客站点了。时隔不久,Brigitte Eaton也搜集出了一个名叫“Eaton网络门户”的博客站点名单,并且提出应该以日期为基础组织内容。这也建立了blog分类排列的一大标准。
1999年7月,一个专门制作博客站点的“Pitas”免费工具软件发布了,这对于博客站点的快速搭建起着很关键的作用。随后,上百个同类工具也如雨后春笋般制作出来。这种工具对于加速建立博客站点的数量,是意义重大的。同年的8月份,Pyra发布了Blogger网站,Groksoup也投入运营,使用这些企业所提供的简单的基于互联网的工具,博客站点的数量终于出现了一种爆炸性增长。1999年末,软件研发商Dave Winer向大家推荐Edit This Page网站,Jeff A. Campbell发布了Velocinews网站。所有的这些服务都是免费的,他们的目的也很明确:让更多的人成为博客,来网上发表意见和见解。
博客带来了什么
现在,全世界每天传播的媒体内容,有一半是由6大媒体巨头所控制。其利益驱动、意识形态以及传统的审查制度,使得这些经过严重加工处理的内容已经越来越不适应人们的需求。媒体的工业化,内容出口的工厂化,都在严重影响其发展。
比如,以美联社为例,有近4000人专业记者,每天“制造并出厂”2000万字的内容,每天发布在8500多种报纸、杂志和广播中,把读者当作“信息动物”一样。这种大教堂式的模式主导了整个媒体世界。这时,以个人为中心的博客潮流却开始有力冲击传统媒体,尤其是对新闻界多年形成的传统观念和道德规范。
博客是一种满足“五零”条件(零编辑、零技术、零体制、零成本、零形式)而实现的“零进入壁垒”的网上个人出版方式,从媒体价值链最重要的三个环节:作者、内容和读者三大层次,实现了“源代码的开放”。并同时在道德规范、运作机制和经济规律等层次,将逐步完成体制层面的真正开放,使未来媒体世界完成从大教堂模式到集市模式的根本转变。
博客的出现集中体现了互联网时代媒体界所体现的商业化垄断与非商业化自由,大众化传播与个性化(分众化,小众化)表达,单向传播与双向传播3个基本矛盾、方向和互动。这几个矛盾因为博客引发的开放源代码运动,至少在技术层面上得到了根本的解决。
博客的崛起
这几年,对于所有新闻媒体来说,都品尝到了技术变革的滋味。如今,再没有任何人会否认互联网对媒体带来的革命,但是,好像也没有多少人感知到互联网的神奇:颠覆性的力量似乎并没有来到人间。
所有的核心在于时间。对于性急的人来说,时间如同缓慢的河流,对于从容的人来说,时间又是急流。互联网的力量的确还没有充分施展,因为互联网的商业化起始,到今天仅仅才10年;互联网作为一种新的媒体方式,从尝试到今天,也刚刚跨过10年。
对于一种全新的媒体形式来说,10年实在过于短暂。但是,10年也足以让人们感受到势不可挡的力量,以及依然静静潜伏着的冲击力。而今,随着博客的崭露头角,网络媒体异常的力量开始展现了,声势逐渐发大。虽然,博客依然在大多数人的视野之外,但是,他们改变历史的征程已经启动。
1998年,个人博客网站“德拉吉报道”率先捅出克林顿莱温斯基绯闻案;
2001年,911事件使得博客成为重要的新闻之源,而步入主流;
2002年12月,多数党领袖洛特的不慎之言被博客网站盯住,而丢掉了乌纱帽;
2003年,围绕新闻报道的传统媒体和互联网上的伊拉克战争也同时开打,美国传统媒体公信力遭遇空前质疑,博客大获全胜;
2003年6月,《纽约时报》执行主编和总编辑也被“博客”揭开的真相而下台,引爆了新闻媒体史上最大的丑闻之一;
2004年4月,轰动一时的Gmail测试者大部分从bloggers中产生;
……
这一系列发源于博客世界的颠覆性力量,不但塑造着博客自身全新的形象,而且,也在深刻地改变着媒体的传统和未来走向。
博客今后的发展预测
博客秉承了个人网站的自由精神,但是综合了激发创造的新模式,使其更具开放和建设性。要在网络世界体现个人的存在,张扬个人的社会价值,拓展个人的知识视野,建立属于自己的交流沟通的群体。从这个意义上说,博客将会变得越来越普及,越来越为更多的人接受。2002年8月“博客中国”网站的开通,标志着“博客”(Blog)现象在中国互联网界的显露;11月18日,新闻传播学术网站“紫金网”在改版之际,推出“博客擂台”新栏目。从信息传播的角度看,博客网站、频道的出现对于博客个体而言,意味着将信息采集与发布的通道最大程度的简单化与快捷化。也许你现在还不相信,但是想一想,为什么在互联网的最低潮时期,在个人网站大萧条时刻,在商业网站最凄惨之际,没有一分投资,没有大公司炒作,博客却开始如火如荼?“当然,一切还都需要时间。博客刚刚开始发展,尤其是中国,目前仅仅是博客概念普及和萌芽阶段。不能完全依据现在的状况判断未来,而要看1~2年后,3~5年后的发展步伐。当然,第一步,你自己应该首先去实践一下。”
博客作为一种新表达的方式,它的传播不仅情绪,包括大量的智慧、意见和思想。某种意义上说,它也是一种新的文化现象,博客的出现和繁荣,真正凸现网络的知识价值,标志着互联网发展开始步入更高的阶段
Ⅵ windows下设置emacs的路径
配置文件_Emacs在你的家目录下
"C:/Documents and Settings/username/Application Data"。
在Window7下,配置文件目录在:
"C:/Users/username/AppData/Roaming"。
windows下,emacs的配置文件在哪儿?的更多相关文章
windows下Emacs的安装与配置
1.下载 到这个网址可以下载到Emacs的windows版本:http://ftp.gnu.org/pub/gnu/emacs/windows/ 只需要一个压缩文档,如emacs-23.2-bin-i ...
windows下redis的配置文件(redis.windows.conf)
#redis的配置 #Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize yes #当Redis以守护进程方式运行时,Redis默认会把pid写入 ...
Windows 下vim的配置文件_vimrc
set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set ...
vim7.4版本在windows下的配置文件及所在位置
1.vim在windows下默认首先会查找"_vimrc"文件,如果没有则会找".vimrc".造成这个原因是windows早期不支持以点开头的文件及目录.2. ...
windows下编辑器Emacs的安装与配置
一年成为Emacs高手(像神一样使用编辑器) http://blog.csdn.net/redguardtoo/article/details/7222501 原创作品,允许转载,转载时请务必以超 ...
烂泥:Windows下安装与配置Nginx web服务器
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章,我们使用nginx都是在linux环境下,今天由于工作的需要.需要在windows环境也使用nginx搭建web服务器. 下面记录下有关ng ...
Mysql 数据库在 Windows 下修复 only_full_group_by 的错误
本机上新安装了个MySQL数据库,在插入数据的时候一直提示这个错误: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY ...
emacs windows 下配置
一般windows的emacs是一个压缩包,解压一下,即可.主程序在bin文件夹下.需要设置一下emacs的home路径, 打开注册表,创建HKEY_LOCAL_MACHINE/SOFTWARE/GN ...
Windows下安装Emacs+Sbcl+Slime
前言 其实网上已经有很多类似的文章了,我也是按照上面的来做.在做的过程中会遇到几个很坑的地方,我自己也是折腾了好久才弄好.所以现在写出来希望能对大家有所帮助. 正文 下载和安装Emacs http:/ ...
[Mysql]mysql windows下配置文件
环境是win7 mysql5.6版本 测试下配置文件是否可用(之前没用过windows下的msyql配置) 修改配置前查询下: mysql> show variables like '%max_ ...
Ⅶ 如何在WEB网页上编写程序
具体编写操作如下:
1.打开WEB,图中示例为一个显示一组随机数组的程序,程序名称为ex14.c。编写完成后,同时按下键盘的【alt】和字母【X】键。
Ⅷ html5用什么软件编写
. 编辑器里边推荐sublime,这是通过自己的简单配置,能够顺手使用的一款,界面炫酷,主题漂亮,体验给力。
2. 另外vim,emacs,textmate入门曲线比较陡,不建议使用。
3. 另外简单点的:notepad++,editplus,选那个区别不大。notepad++有黑色主题,editplus启动还是那么快。
4. webstorm,phpstorm,intellijdea,随便选一款,都差不多。分别支持不同的后台语言而已。
而web前端开发乃及其它的相关开发,推荐sublime text, webstorm(jetbrains公司系列产品)这两个的原因在于,有个技术叫emmet, Emmet Documentation,而这两个对他的支持是:
sublime text 是所有编辑器里边支持emmet比较好的的唯一一款。
webstorm是所有编辑器里边唯一内置emmet的一款,并且将emmet的精神往前推动的一款。
Ⅸ emacs 的使用:哪些是真正有用的组合键
早期的 Shell 直接运行在各种各样的 Terminal 里面,随着时间的推移,我们有了 X Window。大量的 Shell 开始运行 Xterm 里面。对于笔者来说呢,更加喜欢让 Shell 运行在 Emacs 里面。将 Shell 运行在 Emacs 里面与运行在 Xterm 里面到底有什么不同呢?相信我,将 Shell 从 Xterm 里面搬出来绝对不是一个赚取眼球,标新立异的决定。这篇文章介绍了将 Shell 从 Xterm 里面搬到 Emacs 里面带来的各种改变。这篇文章适合 Emacs 的初级与中级用户,需要读者具有一定的 Shell 使用经验。最好具有较长时间的 Shell 使用经历,以更加充分的体会到 Emacs 带来的变化。文章中的内容谨代表作者的个人观点。不代表 IBM 的任何官方观点。所附代码仅在运行于 Cygwin 环境下的 GNU Emacs 当中测试通过。 您可以访问“Emacs 编辑环境“系列教程来了解更多和 Emacs 相关的内容: Emacs 编辑环境 为什么要使用 Shell? 我不也太清楚,但是,在这样一个 Windows 横行的年代里,总是有着无数的 Unix 管理员在遍布全球的各个角落里默默奉献,保证着我们的世界继续运行。那么,为什么要在 Emacs 里面使用 Shell? 在Emacs 里面使用 Shell 和在其他地方相比,比如说 xterm,甚至是 Windows 的命令行窗口里面使用 Shell 有什么不一样呢?这个问题,我个人认为不是一个技术问题,而是一个生活舒适度的问题。之所以选择在 Emacs 里面使用 Shell,就是因为在 Emacs 里面会使你的生活的更加舒适。 生活舒适度的问题 信不信由你,人们总是希望生活的更加舒适。那么,把 Shell 搬到Emacs 环境里究竟能够带来那些生活舒适度的提高呢?在回答这个问题之前,让我们先进行一个简单的热身运动。 大家都知道,现代的 Bourn Again Shell(bash) 要比古老的 Bourn Shell(sh) 用起来舒服多了。因为 Bourn Again Shell(Bash) 引入了很多非常舒服的新的特性。比如说历史 (History) 功能,比如说命令行编辑功能。这些都是大家非常喜欢的功能。不是吗?但是,问题是,如果你想在 Shell 的世界中生活的更加舒适,就会发现很多时候他都不能真正的让你满意。 通常来说,但凡有过在古老的 Bourn Shell(sh) 或者某些缺乏历史功能的 Korn Shell(ksh) 环境下的使用经验的人来说,Bourn Again Shell(bash) 的历史 (History) 功能都是一个非常可爱的功能。它提供了很多很好的重复历史命令的有趣方式,我们可以使用 ! 命令去全部或者部分的引用上一条刚刚执行过的命令,我们可以使用 ^^ 命令简单编辑上一条命令并且生成一条新的命令,我们可以也使用向上的箭头键去回朔查找许久以前曾经执行过的命令,然后使用命令行编辑功能随心所欲的编辑这条命令。但是这里面有一个非常隐蔽的问题:所有这一切,都是集中在“命令行”这个概念中的。说白了,各种各样的不同的 Shell 版本提供给我们的就是一个命令解释器,外加一个命令行编辑环境。 这样有什么不对吗?对,但是欲望总是没有止境的。为什么不能够全屏幕编辑呢? 让我们来看看一个很简单的例子。我有一个 Omegamon XE for Messaging 的安装。这是 IBM Tivoli 旗下的一款监控产品。通过与 IBM Tivoli Monitor 产品的集成,实现对 WebSphere MQ,WebSphere Message Broker 产品的运行监控,以及对 WebSphere MQ 产品的修改与配置。由于某种需要,现在我需要将一个 MQ Monitoring agent 停止下来。我不想将那个漫长的命令从头到尾输入一遍,因为我知道我可以使用 history | grep ‘itmcmd agent’ 命令从已经存在的命令历史里面找到曾经启动这个 agent 的命令,然后我所要做的,仅仅只是在原来命令的基础上将 start 参数修改为 stop 就可以了。但是……事实上 Shell 并没有给我一个修改这条命令的机会。 图1 事实上我必须先用鼠标将屏幕上的第 437 条命令复制到剪贴板里面,然后把它粘贴到我的命令提示符后面,之后再使用 bash 的命令行编辑功能,将那个可爱的 start 参数修改为 stop。说实话,我的某些同事每天就是这样做的,另一些则是干脆将停止命令从头到尾再输入一遍。回答我一个问题,你有没有曾经也像我一样,在看到 history | grep 的输出的时候,曾经梦想过,能够直接在第 437 条命令上面改几个字母,然后就直接敲下回车呢?现在你可以了--在 Emacs 里面。在 Emacs 里面,你可以将你的 Shell“扩展”到全屏幕编辑。 让我们重新查找刚才提到的那条命令。这一次,我们不用 history | grep 的方法。是的,这个方法仍然管用。但是既然是在 Emacs 里面,我希望介绍一些更加 Emacs 化的使用方法,我们使用 Ctrl-r 组合键。如果你已经使用过 Emacs,但是从来还没有在 Emacs 里面看到过 shell 提示符的话,不妨跟我一起来,在 Emacs 当中输入 ESC-x 组合键,然后在提示缓冲区里面输入 shell(全部字母小写)回车,然后你就会在 Emacs 的编辑缓冲区里面看到熟悉的 shell 提示符了。在接下来的例子里面我们假设你已经执行过启动 MQ Monitoring agent 的那条命令了,大约是在 4 个小时前或者别的什么时候。现在要做的,就是把这个特定的 agent 停止下来。跟我一起在 Emacs 里面输入 Ctrl-r 组合键,这个时候你会在提示缓冲区里面看到 I-search backward: 这样的字样。没错,这个组合键对应的就是 Emacs 当中的回朔查找的功能。我们所要做的,就是像通常在一篇文档里面查找一个句子一样,在回朔查找提示符的后面输入 itmcmd agent,Emacs 非常迅速的就把光标定位到了曾经执行过的 bin/itmcmd agent –o QM_106 start mq 这一行命令上面。就在这里,让我们把 start 修改为 stop,然后,直接就在这里按下回车键--修改以后的命令会自动的被复制到正确的 shell 提示符后面并且被执行。无穷无尽的拷贝与粘贴终于被终结了。 更理想的情况下,如果你想修改的命令还仍然显示在你当前的屏幕范围内(这在我的工作当中覆盖了大多数情况),甚至可以省略使用 Ctrl-r 组合进进行查找的过程,直接移动光标到你需要的命令,修改,或者回车就是了。 图2回页首 技术性击倒 上面提到的还只是一些很简单的事情。或者说是一些使用习惯方面的事情。每个人都有自己的生活习惯。我就见过一些人,他们甚至很少使用 History 功能。他们执行每一条命令都会从头到尾输入进去。如果中间有什么东西写错了,他们会停下来再输一遍。我只能承认我没有他们那么勤奋了。 下面我们要谈论一些真正技术性的问题。一个实际工作中的案例问题。我在上面提到过,我的日常工作的一部分就是使用 Omegamon XE for Messaging 产品,既然他是监控 WebSphere MQ 的一款产品,那么同样意味着我也会频繁使用 WebSphere MQ 产品。一天,我需要处理这样一个问题,我有 11 个处于停止状态的队列管理器(Queue Manager),他们全部需要启动起来。 图3 通常在 shell 环境下,会有两个选择。第一个选择,一条一条的编写 11 条strmqm 命令,将所有这些队列管理器一个一个地启动起来。第二个选择,我可以使用 SED 实用工具编写一些小脚本,利用 dspmq 命令产生的输出内容来生成这 11 条命令,并把它们输出到一个文件里面。是的,在使用 Emacs 之前我是使用这第二种方法的。现在,在 Emacs 里面,我可以使用第三种选择,一种所见即所得的选择。Emacs 不仅提供了全屏幕编辑的全套功能,而且还提供了超越传统编辑方式的矩形编辑功能。使用这个功能,你可以把屏幕上的任何内容作为一个矩形块进行剪切或粘贴操作。现在跟我一起,把光标定位到 QM_100 的字母 Q 的位置,并输入 Ctrl-@ 组合键设置起始的标记位。接下来把光标移动到 QM_110 的数字 0 的后面,输入 Ctrl-x r k 组合键(对,一共是 4 个按键。但是仍然非常容易记忆,只要记住中间的 r 是rectangle 的缩写就行了,所有的矩形编辑命令都会有这个 r 字母加入)。看看屏幕上面发生了什么?是的,所有的队列管理器的名字全都不见了。他们被作为一个矩形块剪切进了 Emacs 的删除环(king-ring)当中。 图4 接下来,让我们将这些剪切下来的队列管理器的名字粘贴到一个用来启动这些队列管理器的脚本文件中去。在这里我们使用最简单的 here 文档的功能 cat <<eof >strmqm.sh,创建一个空白的脚本文件。然后,在 Emacs 当中输入 Ctrl-x r y 组合键,这个组合键的作用是将删除环里面的矩形文本块作为一个矩形,粘贴回去。下面的截图就是你在屏幕上所看到的结果。 图5 没错,你注意到了,我们真正需要的并不是队列管理器的名字列表,而是一连串 strmqm QM_100 这样的 shell 命令。没问题,接下来让我们继续使用 Emacs 的矩形编辑功能来完成这些命令。再次把光标移动到 QM_100 的字母 Q 的位置,输入 Ctrl-@ 组合键设置标志,然后移动光标到 QM_110 的字母 Q 的位置,输入 Ctrl-x r p 组合键。这个组合键的作用是在选定的位置前面填充一个矩形区域,填充的内容在提示缓冲区里面输入。现在在提示缓冲区里面 string insert rectangle: 的提示符后面输入 strmqm 加空格。下面的截图就是这个时候你在屏幕上所看到的结果。 图6 这里面有一个小秘密需要提示一下,因为在 here 文档的提示符下事实上是不可能进行这样的修改的。但是,直到目前为止 Emacs 还没有将编辑缓冲区里的内容传递给 here 文档提示符。以上所做的一切还都仅仅发生在 Emacs 内部。 现在输入一个回车键,已经编辑好的 11 条strmqm QM_1xx 命令就已经传递给 here 文档提示符了。最后输入 eof 结束文档编辑。一个简单清晰的队列管理器启动脚本就已经完成了。只要在 shell 提示符下通过 bash strmqm.sh 命令运行它,就可以启动所有这 11 个队列管理器了。 图7回页首 一些有趣的小技巧 第一个小技巧:在 Emacs 里面同时打开多个 shell 会话 这听起来应该是理所当然的,既然 Emacs 可以同时运行多个窗口……但是即使是在我买的那本关于 Emacs 的书里面也没有提到如何能够真的打开多个 shell 会话。让我们试试看,输入 ESC-x shell 启动shell 会话,在 shell 提示符下执行 cd /tmp 命令,然后输入 Ctrl-x 2 组合键将屏幕切分成上下两个窗口,然后再次输入 ESC-x shell 启动shell 会话,你会发现 Emacs 不为所动。在上下两个窗口里面仍然还是 cd /tmp 命令执行后的结果,也就是说仍然还是原先的那个 shell 会话。说起来 O’reilly 公司应该退还我一部分书钱,因为他们没有将我想知道的问题讲明白。后来我终于发现了解决的办法。只要我将当前的 shell 会话所在的缓冲区重新命名,然后就可以再次启动一个新的 shell 会话。让我们来试试看。输入 ESC-x rename-buffer,在 Rename buffer (to new name): 提示符后输入一个新名字,例如 *shellA*。这个时候你会看到上下两个窗口中的缓冲区都被重命名为 *shellA* 了,是的,他们显示的是同一个缓冲区。现在在任意一个窗口里面输入 ESC-x shell 启动shell 会话,这时你会看到一个新的 *shell* 缓冲区创建了出来,并且有了一个新的 shell 提示符。现在让我们在这个新的 shell 提示符下执行 cd / 命令,你会发现,缓冲区 *shellA* 当中的 shell 会话并没有受到新的命令的影响,因为他们是两个不同的 shell 会话。重复同样的方法,可以得到更多的 shell 会话,满足你的使用需要。 图8 第二个小技巧:history | grep 的输出结果可以直接输入回车使用 让我们再回到当初提到过的第 437 条命令。如果需要再次运行这条命令,你只需要把光标定位到这条命令所在行,删除掉命令前面的 437 这个号码,然后直接输入回车,Emacs 会提你把它复制到正确的 shell 提示符后并且启动执行。似乎这个方式描述起来并没有 shell 本身提供的 !437 命令来的迅速,但是他毕竟提供了一个更加直观的操作可能。另外,如果希望在运行之前对于这条命令进行一些修改,我指的是删除,例如删除掉某个参数,或者单词,你也尽可以尽情删除,然后在最终的删除结果上面输入回车,告诉 Emacs 去复制运行就是了。这个状况目前似乎还没有发现 ! 命令有可以搞定的可能。另外,如果希望在运行之前对于这条命令进行一些添加性质的修改,例如添加一些新的参数,或者把第 437 条命令中的 start 单词删掉,添加上 stop 单词,在目前的 Emacs 里面还没有提供直接的支持。但是我们可以通过增加一步操作来实现它。第一步,让我们首先把光标定位到第 437 条命令的位置,然后输入回车,这个时候命令不会成功运行,一行提示信息 bash: 437: command not found 会显示在你的 shell 提示符下面。没关系,让我们稍微修改一下刚刚运行失败的这条命令。重新定位光标到刚刚执行过的这条命令所在的行,然后把命令中的 start 参数修改为 stop 参数,并且删除命令前面的 437 这个号码,再次输入回车,修改之后的命令就会成功运行了。这里增加的第一步操作实际上代替了通常情况下需要的拷贝粘贴操作,拷贝和粘贴事实上是交由 Emacs 替我们实现了。 图9 第三个小技巧,整理你的屏幕 在前面讲到生活舒适度话题的时候,我们曾经提到过在 Emacs 里面使用 shell 的一个很常用的方法就是在屏幕上已有的命令上面稍作修改,或者直接回车来复用已经执行过的历史命令。但是如果你所感兴趣的命令因为种种原因已经不在当前屏幕显示的范围之内了,除了不断的通过使用 Ctrl-r 组合键进行回朔查找以外,还有没有什么更方便的办法呢?答案是有,而且还有不止一种选择。如果在你的当前提示符和你感兴趣的命令之间仅仅只是由于时间的关系隔着太多无关的命令记录,那么你尽可以简单的将这些多余的内容删除掉就行了。不要担心,这些内容仅仅只是在 *shell* 编辑缓冲区里的普通文本内容而已,将他们删除和将一篇文档里面的文本删除没有什么区别。如果这些中间的命令记录并不是完全无用了,仅仅只是在现在这段时间不感兴趣的话,你还可以选择使用 hide-region-hide 命令将这些中间的命令记录作为一个文本块隐藏起来。这些隐藏起来的内容仅仅只是不再在屏幕上显示而已,他们仍然存留在原有的编辑缓冲区里面,以后当你再次需要他们的时候,可是使用 hide-region-unhide 命令再把他们重新显示出来。还有一种情况就是仅仅因为你刚刚执行了一个产生大量输出的命令而已,比如说使用 cat 命令书出了一个较大的日志文件,从而导致你感兴趣的历史命令被日志文件的内容冲出了当前屏幕显示范围,这个时候只需要输入 Ctrl-c Ctrl-o 组合键,将刚刚执行过的那条命令的屏幕输出清除掉就是了。通常我在每次 cat 日志文件或者列出一个含有较多文件的目录之后都会使用 Ctrl-c Ctrl-o 组合键来清理一下我的屏幕。 最后我们再来说一个非常有用的小技巧,使用缩写词 Emacs 的强大的缩写词(abbrev)功能,这些缩写词功能同样可以应用到 Emacs 当中的 shell 环境里来。通常在使用 Emacs 便写文章的时候,我们会使用缩写词功能来减少频繁输入冗长的单词或者语句时候的击键次数,或者使用缩写词功能避免一些可能的拼写错误。当我们在 Emacs 里面使用 shell 的时候,我们同样可以使用缩写词功能来缩写一些冗长的命令,路径,和避免一些常见的输入错误,这样在每天的工作当中会为我节省大量的击键次数。有些读者看到这里一定会想到 shell 本身提供的别名(Alias)功能也能完成命令的缩写,但是,别名功能有很多局限性。首先,别名功能缩写的命令只能通过别名单独引用,无法和其他 shell 命令一同组合运行。例如我可以定义一个别名来进入常用的 IBM Tivoli Monitoring 产品的安装目录,alias cditm=’cd /opt/IBM/ITM’, 然后输入 cditm 执行这条命令来进入 IBM Tivoli Monitoring 产品的安装目录。但是我不能够定义一个别名来缩写这个目录本身,alias itmm=’/opt/IBM/ITM’, 然后输入 cd itmm 执行这条命令来进入这个目录,或者输入 itmm/bin/cinfo –r 来直接引用该目录下的可执行文件。还有一个问题,通过别名定义的命令缩写只能够直接引用执行,没有可能对于很多相似的命令定义通用的一个“别名模板”,然后每次使用的时候引用模板,然后稍作修改之后运行。例如启动 Omegamon XE for Messaging 产品中的 MQ Monitoring agent 的常用命令,bin/itmcmd agent –o QM_101 start mq。我可以把它定义为一个别名,alias strkmq_QM101=’bin/itmcmd agent –o QM_101 start mq’, 但是事实上每次在启动一个 MQ Monitoring Agent 的时候,其中的队列管理器(Queue Manager)的名称都是不同的,我不可能为每一个队列管理器都定义一个单独的别名。况且还有其他的 agent,这样的话别名的数量将会相当可观。Emacs 的缩写词功能在这里提供了两步走的设计方法,避免了以上提到的所有问题。让我们还是以上面提到的目录和命令的两个例子来了解一下在 Emacs 里面如何使用缩写词功能来解决这些问题。首先是常用目录的缩写词定义。在 shell 提示符下输入 cd /opt/IBM/ITM 命令,不用专门为了缩写词去输入这条命令,就在你日常工作当中需要的时候输入就是了,只是记得先不要输入回车,然后,让我们数一数究竟有多少个单词将被包含在这个缩写词定义当中,在这里是 3 个单词,分别是 opt, IBM 和ITM,现在输入 Ctrl-u 3 Ctrl-x a l 组合键,稍微有点儿复杂,我在这里简单解释一下,Ctrl-u 在Emacs 里面是一个非常有用的组合键,它代表一个通用前缀,通常在后面跟一个数字参数,表示随后输入的命令将被重复多少单元,在这个例子里是 3 个单元,后面的 Ctrl-x a l 组合键代表在当前主模式下添加缩写词定义(add-mode-abbrev)命令,其中的 l 代表将该缩写词的定义添加到当前的主模式中,如果希望这个缩写词定义在任何主模式下都可以使用,那么将组合键中的 l 替换成 g,即 Ctrl-x a g, 代表add-global-abbrev 命令。然后,在提示缓冲区确认定义无误之后,输入希望的缩写单词,itmm,即可完成缩写词定义。 图10 接下来我们来使用这个缩写词。例如我们需要进入到 IBM Tivoli Monitoring 产品的安装目录,在 shell 提示符下输入 cd /itmm 加空格,你会发现 Emacs 立刻将这条命令扩展成为 cd /opt/IBM/ITM 显示在刚才的输入位置。现在我们要执行 IBM Tivoli Monitoring 产品目录下的 cinfo 可执行程序,在 shell 提示符下输入 /itmm 加空格,Emacs 立刻将这条命令扩展成为 /opt/IBM/ITM 显示在刚才的输入位置,然后我们只需要输入一个退格键删掉刚才那个空格,继续在后面输入 bin/cinfo –r 就可以了。事实上由于在我的工作当中 , 对于cinfo 命令来说,-r 这个参数非常常用,所以在我的 Emacs 里,bin/cinfo –r 已经被缩写成了 rcinfo 这个缩写词了。那么在我的 Emacs 里面我只需要输入 /itmm 空格键,退格键和 rcinfo 就可以实现完整的 /opt/IBM/ITM/bin/cinfo –r 这条命令了。 再下来我们来看看启动 MQ Monitoring Agent 的命令的缩写词。在 shell 提示符下输入 bin/itmcmd agent –o start mq 命令,注意,在–o 参数后面没有提供队列管理器的名字。因为每次执行这条命令的时候,队列管理器的名字都有可能变化,因此我们不把它定义到缩写词内部。输入 Ctrl-u 6 Ctrl-x a l 组合键,然后,在提示缓冲区确认定义无误之后,输入希望的缩写单词,strkmq 即可完成缩写词定义。 图11 现在让我们来使用这个缩写词。首先我们需要使用 itmm 这个缩写词进入到 IBM Tivoli Monitoring 产品的安装目录,然后,在 shell 提示符后面输入 strkmq 空格,Emacs 立刻将这条命令扩展成为 bin/itmcmd agent –o start mq 显示在刚才的输入位置,现在移动光标到–o 参数后面,输入队列管理器的名称并且回车,你就会看到希望的命令得到运行。 发明一个完美无缺的 shell 是一件相当困难的事情,但是将现有的资源整合起来却会产生很多意想不到的效果。
Ⅹ 我怎样才能在Visual Studio中的Emacs样式的键绑定
在新的VS2010中支持了Silverlight原生的开发,不需要专门再去安装别的补丁包。
在安装了Visual Studio 2010后我们有了这样的Silverlight开发环境: Visual Web Developer Silverlight 3 SDK Silverlight 3 Tools (build 40818, 最新版) 移除的项。