Screen和Emacs的完美結合

2021-05-23 07:57:10 字數 1778 閱讀 6927

有句話叫做「工欲善其事,必先利其器」。programmers對這句話體會最深了。假設一下在某某時候沒有什麼而只能用什麼,我們就會發現,很多時候因為有乙個好的工具我們的工作事半功倍、我們的困難迎刃而解。因此我們收集好的工具,彼此推薦自己使用的工具,也會因為發現乙個好的工具如獲至寶。更有牛人製作出好的工具供他人享用。現在我要說的是怎麼把兩個好工具結合起來。

1、我們往往通過ssh或者telent登入到linux伺服器上進行工作,如果一項工作需要獨自執行很長時間,我們必須等到任務執行完畢才能關掉終端視窗或者斷開連線,否則任務程序會被殺掉。使用screen,你不必擔心這個問題,關閉視窗,甚至你和伺服器的連線突然斷了,只要伺服器沒掛,當你重新連線上伺服器,

attach上你原來的screen,你會發現:everything is here, 並且和你斷開連線時一樣。

2、我們操作一台伺服器的時候很可能要做多項工作,比如起個服務,執行幾個測試客戶端,同時還想監控一下各個程序的日誌,這樣我們就必須同時開啟幾個遠端終端視窗,並在之間來回切換,痛苦可想而知。使用screen,它會把你從這種痛苦中解救出來。screen可以開啟多個screen子視窗,更讓人欣喜的是它還能給各個子視窗命名,通過快捷鍵你就可以快速地在各個子視窗中切換,那種感覺確實很爽。

在你的home目錄下建立.screenrc配置檔案,建立screen時會自動執行此檔案的配置。

hardstatus alwayslastline "%% screen(s): %%w %=%%c%a  %d, %m/%d/%y " 

這句配置語句可讓你的screen在終端視窗下方顯示各個子視窗名,並且顯示系統時間。後面說screen和emacs的結合使用時也會講到一些配置。

更多的screen介紹可在linux系統中檢視幫助。

非常強大的一工具,有人說使用emacs的人恨不得電腦能安裝兩個腳踏板,這說明它豐富的快捷鍵以及眾多的功能。對於emacs,我也僅限於夠用,還在進一步的探索中。只是感覺在其中進行編譯、除錯會方便很多,它會自動定位編譯錯誤,單步執行的時候會像vs一樣看到執行到的語句,顯示堆疊,斷點資訊,當然編輯也很快速。

更多的介紹可參考http://emacser.com/。

因為screen和emacs都是靠快捷鍵工作的,眾多的快捷鍵難免會產生衝突,不解決這些衝突這兩個工具就沒法一塊用,那將是多麼痛苦的一件事。

1、c-a是screen的命令字元,它又是emacs中跳到行首的快捷鍵,幸運的是screen允許你重新設定自己的命令字元。

escape ^zz #instead of control-a

通過在.screenrc中新增這條配置語句, 我把screen的命令字元換成了c-z,emacs的快捷鍵實在是多,找個沒有用的確實困難,這是我目前沒發現用到過的乙個快捷鍵。

2、c-s會導致莫名其妙的問題

c-s在emacs裡面是查詢的快捷鍵,c-x c-s是儲存檔案的快捷鍵,它兩都是會經常用到的。每次我同時使用這兩個工具,按下其中乙個快捷鍵的時候,視窗莫名奇妙地停在那了,再按其他鍵就沒反應了,只好重新開視窗,attach上screen,小心謹慎地敲著快捷鍵,一不小心按上c-s了就麻煩了。這個問題困擾了我很長時間,終於有一天實在忍受不了了,檢視了screen的文件才弄明白:screen是有流控制的,當流控制開啟的時候,c-s暫停視窗的輸出,但c-s不會傳送到你的執行程式,你接下來的輸入仍會傳送到你的執行程式,如是就出現了我描述的莫名其妙的情況;當流控制關閉的時候,screen會忽略xon and xoff,並把它們傳送到執行程式,這才是我們期望的。這就需要在.screenrc配置檔案中新增defflow off來關閉流控制。

這樣我們就能同時使用這兩個工具

了,趕快享受它們帶給我們的幸福吧!

Emacs 的安裝和配置

關於emacs 的安裝和配置,網上已經有很多文章介紹,對於初學者最痛苦的莫過於解決方案分布太廣,需要一一尋找。我把各種需要用到的資料彙總一下,方便大家參考,也方便自己以後查閱。基本上下面幾個 就能滿足初學者的要求。emacs 簡單教程 中文 emacs 的簡單設定 windows 上配置emacs ...

nohup命令和screen命令

我們用遠端終端連線遠端主機的時候,有的程式要首席執行官達幾小時甚至幾天。例如晚上10點半,我在遠端終端上啟動乙個spark程式,有一些結果重定向到標準輸出,這個程式要執行10小時。第二天早上一看,遠端終端斷開了,一看程式執行結果,只執行了3小時就中斷了。通過遠端終端啟動的程式,當遠端終端斷開會話的時...

screen和nohub及 用法

先來說一下nohub和 吧 nohub命令的意思的忽略 signup訊號 包括 斷網,關閉終端 其實沒有後台操作的功能 表示後台操作,但是不能忽略結束通話訊號 當 nohub command 這樣一起使用的時候,就可以達到後台執行並忽略結束通話訊號的作用了 但是nohub命令比較單一,如果是針對一次...