[转]Emacs 系列教程
? 上回開了個頭,簡單的介紹了Emacs的一些基本常識,這回繼續說基本常識,怎么移動你的光標。可能有人會說,這上下左右鍵不是很好用嗎,還用你來講。呶,Emacs的強大在于你能夠只使用鍵盤左邊那堆鍵來完成任何事情(不包括頂上的ESC和Function),這也是Emacs的設計宗旨。
為了試驗這些按鍵,大家在進入Emacs時選擇頁面中間的Emacs Tutorial,這里面可以隨便亂按不用擔心出什么岔子。
一、基本導航
看下面這張圖片:
可以這么記,p-previous,n-next,b-backward,f-forward。這里所說的字符對于E文,就是一個字母,而中文是一個漢字,其實Emacs對中文支持還是很厚道的,后面慢慢可以看出來。不過在這兒我個人感覺這個光標移動沒有Vim方便,別人就HJKL,一個鍵就能動了,這需要兩個,Ctrl 有時還覺得按著很別扭,不太和諧呀。
在按C-n 時,如果越過了頁尾,不像一般Windows編輯器是往下滾一行,而是往下滾半夜,當前光標會置于頁面中間。C-p 也是一樣的。
另外兩個使用較多的是C-v?往下翻頁,M-v?往上翻頁。呃,還有一個C-l?就是把當前行提到頁面中間,感覺Emacs對頁面中似乎情有獨鐘啊。
二、中級導航
按字符移的上節說了,然后說按單詞移動:
M-f?向前移動一個單詞,Emacs理解的中文單詞是兩個標點符號之間的東西,所以中文就是移到下一個標點符號的位置。往回是M-b?,向后移動一個單詞。
C-a?移動到行首,C-e?移動到行尾。
M-a?移動到句首,M-e?移動到句尾,在中文中一般就是跑到句號的位置,這里我不得不說一下,現在很多年輕人寫文章有一逗到底的習慣,就只在文章最后加個句號,如果用Emacs來看你的文章,一個M-e 啥都不用干了。作為一個有一定文學素養的人,在此我嚴厲反對這種寫文章的作風,不和諧。
M-}?移動到下一段,?M-{?移動到上一段。
還有兩個跑的更快的導航,M-<?移到文檔首,這里要注意是小于符號<,不是逗號, ,所以我們是按Alt + Shift + ,? 切記。移到文檔尾是M->。
C-x [?和?C-x ]?,分別是往上一頁和往下一頁。這里頁是由分頁符控制的,在Emacs Tutorial 中是沒有分頁符的,所有這兩個鍵會跑到文檔頭和文檔尾去。
例圖:
陰影處是當前光標的位置,其它箭頭所指是按相應鍵后光標的位置。
三。高級導航
可以這么來看基本導航是普通人用的,中級導航是高手采用的,高級導航是磚家、叫獸用的。
M-r?移動到頁面中間行首位置,holly shit,又是頁面中間,真XX陰魂不散。
M-x goto-char (n),這個比較復雜,先按M-x,然后空格輸goto-char回車,另外Emacs有Tab鍵補全功能,大家可以試試,如果有多個選項會有提示,最后輸入一個整數。這個東西會移動到從頭數第n個字符的位置,我估計不會有人變態到能記住每個字是第幾個字符。
M-g M-g [n],按兩次M-g,不用回車,提示輸入一個數字,移動到指定行n,兩個M-g,也可以輸M-g g?。
還有一個比較罕見的,C-x C-n, 這個是設置當前列為目標列。這是什么意思呢,本來我們按C-n 和C-p 時,光標會往下或往上移一行,而列的位置就是當前光標列的位置,除非下一行列沒那么多(就是字符沒那么多),光標會到距當前列最近的列。而我們可以用這個組合鍵重新設一個目標列,這樣在按C-n 和C-p 時,光標會跑到我們設的目標列上。如果你不幸按了,而且又不習慣,可以使用C-u C-x C-n?來取消目標列設置。補充一點,這兩個命令都是禁用命令,是Emacs考慮大家多半不會用,而且比較怪的命令,所以通常就禁用了,你不小心調出時會給出提示問你是否需要繼續。就像這個樣子:
大家按個空格稍微試下就行了。
最后還有兩個重復命令:
M-n,?n是數字,意思是重復下個命令n次,比如M-3 C-f,就是向前移三個字符。
C-u n,n還是數字,也是重復下個命令n次。?如果省略n,就是4次。按兩次C-u,就是重復16次。
小結:
?
| C-f | forward-char | 向前一個字符 |
| C-b | backward-char | 向后一個字符 |
| C-p | previous-line | 上移一行 |
| C-n | next-line | 下移一行 |
| M-f | forward-word | 向前一個單詞 |
| M-b | backward-word | 向后一個單詞 |
| C-a | beginning-of-line | 移到行首 |
| C-e | end-of-line | 移到行尾 |
| M-e | forward-sentence | 移到句首 |
| M-a | backward-sentence | 移到句尾 |
| M-} | forward-paragraph | 下移一段 |
| M-{ | backward-paragraph | 上移一段 |
| C-v | scroll-up | 下移一屏 |
| M-v | scroll-down | 上移一屏 |
| C-x ] | forward-page | 下移一頁 |
| C-x [ | backward-page | 上移一頁 |
| M-< | beginning-of-buffer | 移到文檔頭 |
| M-> | end-of-buffer | 移到文檔尾 |
| M-g g n | goto-line | 移到第n行 |
| (none) | goto-char | 移到第n個字符 |
| C-l | recenter | 將當前位置放到頁面中間(Emacs最喜歡的地方) |
| M-n | digit-argument | 重復下個命令n次 |
| C-u?n | universal-argument | 重復下個命令n次,n默認為4 |
?
注:這里命令這列就是按了M-x后輸的東東。
?
coming from:?http:?//www.cnblogs.com/robertzml/archive/2009/09/14/1566435.html?
轉載于:https://www.cnblogs.com/wujichaomx/p/3746644.html
總結
以上是生活随笔為你收集整理的[转]Emacs 系列教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery源码分析-each函数
- 下一篇: mysql forget the pa