雜談 #26: Emacs and Tramp

  • 新的作業環境要將 R 放到(較 desktop )勁的 Server 運行。1 我要用很有臨時 feel 的一台 laptop2 ,經過 SSH 連上 Server 作業。3
    第一、二天工作,仍處於戇狗摸索階段。 Server 是 Linux 但是我(暫時)沒有 root 或 sudo 資格,不可安裝 Emacs ,只有 pico 、 vim 可選。故此是用 laptop 的 emacs 修改完檔案再用 scp 指令將檔案傳到 server ,每次 save 完就再傳過。
    第三天發現樣不對路。 Emacs 是不止是 Text Editor 更是一個作業系統,這樣的東西一定有前人做過,就上網找方法,於是發現了 Tramp 這個東西。想知道甚麼是 Tramp 可看此片
    從此煩少很多了。
  • 新的工作是非常 seriously 地寫 R code 的,與之前有點亂寫的 R analysis 不同了。如果以前是當海盜,現在就是加入了海軍。故此要學習人家如何處理 project 。也要學下怎樣加強由 R 從 SQL Server 抽取數據、處理海量的數據之類之類。
  • 這些還算易搞,難搞反而是沒有深入認識的 Stat Method 。
  • 這份工作是人家給的 2nd Chance ,要好好珍惜。
  • RIP MCA.
  1. ESS 是可以將 remote 運行的 R session 當成 R process 來作 eval ,方法是 M-X ess-remote 。不過現在分析的數據要用海量來形容,分析時間最短也要三四分鐘,故此想用 Rscript 之類的方法令它自行在背後運行,而不是 eval 。 []
  2. 幸好他們讓我安裝 Linux 。由於這是一份臨時工,合約期短,故此我也不太用心裝,隨便用 Wubi 就算了。 Wubi 雖慢,但我用的功能其實很少,下述。 []
  3. 故此,此 laptop 只需要可執行 Emacs, terminal 下的 ssh 和 web browser 就可以的了。所以是不需要強的。 []

Emacs customization

Yeah, I know Emacs sucks. But I like it.

I like this GNU Emacs for Mac OS X more than Aquamacs. I hate the OSX-ized experience of Aquamacs and I dumped it this morning.
In order to make Emacs works for me, I have to (heavily) customize it. My ~/.emacs grew to 41 lines and still counting.
List of customizations:

  1. Latest version of org-mode from package.el
  2. org2blog
  3. xmlrpc.el
  4. Turn off truncation of long lines for org-mode
  5. Octave-mode instead of Matlab mode
  6. Python-mode instead of python.el
  7. ESS – Emacs Speaks Statistics
  8. Color-theme, my favorite theme is clarity
  9. Default font to Monaco 18
  10. No blinking cursor
  11. Paren-mode to 1
  12. Not strictly Emacs customization – remapping the useless Caps-lock key on my MacBook keyboard to Ctrl. So that I can C-x C-f without moving my fingers away from the home row.

TODO:

  1. deft
  2. git-mode
  3. Practicing touch typing

Install binary version of Octave for Mac OS X

Octave 是 FOSS 版本的 MATLAB 。1 由於 Machine Learning 要用到它,故此將它裝至 Macbook 。在工作間的 Linux 電腦可用一個指令安裝好

sudo apt-get install octave gnuplot

但在 Mac OS X ,卻好煩。其實在 Octave 主頁是有 Binary 下載,叫做 Octave.app 。但是安裝完卻要在 Application 雙擊開啟,才彈出 Terminal 運行 Octave 。與 Binary 的 R 不相像2 ,在 Terminal 輸入 octave 是不能啟動 octave 的。這一點我是不能理解的。
安裝完 Octave.app 後,要在 Terminal 輸入

sudo ln -s /Applications/Octave.app/Contents/Resources/bin/octave /usr/bin/octave

就可以直接在 Terminal 輸入 octave 啟動。

修好後,才可以用 emacs 正常使用 octave 。如果想要將原來 MATLAB 的 .m 用 Octave mode 開啟,要在 ~/.emacs 加入:

(autoload ‘octave-mode “octave-mod” nil t)
(setq auto-mode-alist
(cons ‘(“\\.m$” . octave-mode) auto-mode-alist))

要在 emacs 開個 octave 的 prompt ,叫作 inferior octave ,以 M-x run-octave 啟動。
將 source code 送到 inferior octave , keybinding 好奇怪。 (C-c TAB C-b, WTF?)

  1. 其實我好憎 MATLAB ,今天才在 Google Plus 臭罵 MATLAB ,內容如下:The syntax of Octave or his non-opensource brother MATLAB is a chaos. For example, some functions work like “load something.dat” and in some case you need “load(something.dat)”. It is not consistent and this inconsistency is idiosyncratic. Maybe mathematicians or engineers could appreciate it but I just can’t. LISP/Scheme is a great thing because of it’s consistency. I like R for it’s LISPy consistency. []
  2. 安裝完 Mac 版的 R binary ,在 Terminal 是可以啟動 R 的。因此,像 emacs 的 ESS 才能工作 []

My emacs cheatsheet

近日用多了很多 emacs ,包括用來寫作及寫 code ,故寫下了最常用 80% 的 command 。在看 emacs 的書,指 emacs 與 vi 不同,各種 command 是 finger habit ,是肌肉記憶,和彈結他很似。亦因為 emacs 的按鍵常常多於三粒,書中還形容為 chords 。

Basic

C-x C-f 是 visit new file (可作 Open 及 New 用)
C-x C-s 是 Save
C-x C-c 是 Quit

Buffer

C-x 2 切開畫面上下兩份
C-x o 跳到另一 Buffer
C-x Arrow 是換畫
C-x k 是 Kill Buffer

Edit

C-_ Undo
C-@ Mark
Cx-h Select all
C-w Cut
M-w Copy
C-y Yank (Paste)
M-% Search & Replace (Space = Yes, ! = All, Return = No)

ESS – Emacs Speaks Statistics

M-x R Start R session

Process buffer:

M-p / M-n Command history
TAB Auto-completion (無乜用)

Difference between Eval (E) / Eval-go (EG)

(E) = Send code and return to code buffer
(EG) = Send code and switch to process buffer

Region (E) C-c C-r (EG) C-c M-r
Line (E) C-c C-j (EG) C-c M-j
Buffer (E) C-c C-b (EG) C-c M-b