當前位置:首頁 » 網頁前端 » emacsweb
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

emacsweb

發布時間: 2022-05-29 01:53:43

Ⅰ 學習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, 最新版) 移除的項。