24
Linux Programming Tutoring - Introduction to Editors for Linux

Linux Programming Tutoring

  • Upload
    galen

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

Linux Programming Tutoring. - Introduction to Editors for Linux. Outline. vim 基本指令 自定 vim 設定檔 (.vimrc) vim 進階技巧 emacs 基本指令 emacs 特殊功能. vim Overview. 一般模式 vim 預設的模式 可以移動游標 『 刪除字元 』 或 『 刪除整行 』 也可以 『 複製、貼上 』 來處理你的文件資料 編輯模式 一般模式中按下 『 i , I, o, O, a, A, r, R』 之後進入編輯模式 可編輯文件內容 - PowerPoint PPT Presentation

Citation preview

Page 1: Linux Programming Tutoring

Linux Programming Tutoring- Introduction to Editors for Linux

Page 2: Linux Programming Tutoring

Outline

• vim 基本指令• 自定 vim 設定檔 (.vimrc)• vim 進階技巧• emacs 基本指令• emacs 特殊功能

Page 3: Linux Programming Tutoring

vim Overview• 一般模式

– vim 預設的模式– 可以移動游標– 『刪除字元』或『刪除整行』– 也可以『複製、貼上』來處理你的文件資料

• 編輯模式– 一般模式中按下『 i, I, o, O, a, A, r, R 』之後進入編輯模式– 可編輯文件內容– 按下『 Esc 』這個按鍵即可退出編輯模式

• 指令列命令模式– 一般模式中輸入『 : / ? 』即可進入此模式– 可以『搜尋資料』– 讀取、存檔、大量取代字元、離開 vi 、顯示行號

Page 4: Linux Programming Tutoring

vim Overview

一般模式編輯模式

指令列模式

i,o,a( 插入 )r,R( 取代 )

[ESC]

:,/,?

[ESC]

Page 5: Linux Programming Tutoring

vim一般模式常用指令 (1/2)

h 或 向左方向鍵 (←) 游標向左移動一個字元j 或 向下方向鍵 (↓) 游標向下移動一個字元k 或 向上方向鍵 (↑) 游標向上移動一個字元l 或 向右方向鍵 (→) 游標向右移動一個字元nh / nj /nk /nl n 為數字。游標向左 / 下 / 上 / 右移

動 n 個字元n← / n↓ / n↑ / n→ 游標向左 / 下 / 上 / 右移動 n 個字元[Ctrl] + [f] 螢幕『向下』移動一頁[Ctrl] + [b] 螢幕『向上』移動一頁[Ctrl] + [d] 螢幕『向下』移動半頁[Ctrl] + [u] 螢幕『向上』移動半頁n<space> n 為數字。按下數字後再按空白鍵,

游標會向右移動這一行的 n 個字元

Page 6: Linux Programming Tutoring

vim一般模式常用指令 (2/2)G 移動到這個檔案的最後一行nG n 為數字。移動到這個檔案的第 n

行gg 移動到這個檔案的第一行x, X x 向後刪除一個字元, X 為向前刪

除一個字元dd / ndd 刪除游標所在的那一 / n 列yy / nyy 複製游標所在的那一 / n 行p, P p 為將已複製的資料在游標下一行貼

上, P 則為貼在游標上一行u 復原前一個動作[Ctrl]+r 重做上一個動作. 重複前一個動作

Page 7: Linux Programming Tutoring

vim編輯模式常用指令i, I 進入插入模式 (Insert mode) :

i 為從目前游標所在處插入I 為在目前所在行的第一個非空白字元處開始插入

a, A 進入插入模式 (Insert mode) :a 為從目前游標所在的下一個字元處開始插入A 為從游標所在行的最後一個字元處開始插入

o, O 進入插入模式 (Insert mode) :o 為在目前游標所在的下一行處插入新的一行O 為在目前游標所在處的上一行插入新的一行

r, R 進入取代模式 (Replace mode) :r 只會取代游標所在的那一個字元一次R 會一直取代游標所在的文字,直到按下 ESC 為止

[Esc] 退出編輯模式,回到一般模式中

Page 8: Linux Programming Tutoring

vim指令列模式常用指令:w / :w! 將編輯的資料寫入 / 強制寫入硬碟檔案中:q / :q! 離開 / 強制離開 vi :wq / :wq! 儲存後離開 / 強制儲存後離開ZZ 若檔案沒有更動,則不儲存離開

若檔案已經被更動過,則儲存後離開:! command 暫時離開 vi 到指令列模式下執行 command 的

顯示結果:set nu 顯示行號:set nonu 取消行號

Page 9: Linux Programming Tutoring

vim搜尋及取代常用指令/word 向游標之下尋找一個名稱為 word 的字串?word 向游標之上尋找一個字串名稱為 word 的字

串n n 是英文按鍵。重複前一個搜尋的動作N N 是英文按鍵。反向進行前一個搜尋動作

:n1,n2s/word1/word2/g n1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字串,並將該字串取代為 word2

:1,$s/word1/word2/g 從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2

:1,$s/word1/word2/gc 同上。但取代前顯示提示字元給使用者確認

Page 10: Linux Programming Tutoring

vim 環境設定• 使用者 vim 設定檔為 ~/.vimrc• 系統之 vim 設定檔通常為

/etc/vim/vimrc 或 /etc/vimrc • 一般模式下輸入 :set all 可顯示所有設定選項

Page 11: Linux Programming Tutoring

vim常用設定set nuset nonu 設定 / 取消 行號set hlsearchset nohlsearch 設定 / 取消 high light search

set autoindentset noautoindent 設定 / 取消自動縮排set backup 是否自動儲存備份檔set ruler 顯示右下角的一些狀態列說明syntax onsyntax off 設定 / 取消 依據程式相關語法顯示不同顏

色set bg=darkset bg=light 可用以顯示不同的顏色色調,預設是 light

Page 12: Linux Programming Tutoring

.vimrc 設定範例

" 這個檔案的雙引號 (") 是註解set hlsearch " 高亮度反白set autoindent " 自動縮排set ruler " 可顯示最後一行的狀態set showmode " 左下角那一行的狀態set nu “ 每行最前面顯示行號set bg=dark " 顯示不同的底色色調syntax on “ 進行語法檢驗顏色顯示

Page 13: Linux Programming Tutoring

vim 的暫存檔 (1/2)• vim 會在與被編輯檔案的目錄下,建立一個 .

filename.swp 檔案• 若 vim 不正常關閉,下次再開啟時會顯示以下畫面

Page 14: Linux Programming Tutoring

vim 的暫存檔 (2/2)• [O]pen Read-Only:打開此檔案成為唯讀檔, 可以用在你只是想要查閱該檔案內容並不想要進行編輯行為時• (E)dit anyway:還是用正常的方式打開你要編輯的那個檔案, 並不會載入暫存檔的內容• (R)ecover:載入暫存檔的內容,用在要救回之前未儲存的工作。 不過當你救回來並且儲存離開 vim 後,還是要手動自行刪除那個暫存檔• (D)elete it:開啟檔案前會先將這個暫存檔刪除• (Q)uit:按下 q 就離開 vim ,不會進行任何動作回到命令提示字元。• (A)bort:忽略這個編輯行為,與 quit 非常類似

Page 15: Linux Programming Tutoring

vim多重檔案編輯

:n 編輯下一個檔案:N 編輯上一個檔案:files 列出目前這個 vim 的開啟的所有檔案

想要將 A 檔案內的十條消息『移動』到 B 檔案去,通常要開兩個 vim 視窗來複製, 偏偏每個 vim 都是獨立的,因此並沒有辦法在 A 檔案下達『 nyy 』再跑到 B 檔案去『 p 』!此時這個多檔案編輯就派上用場了!

Page 16: Linux Programming Tutoring

vim多重視窗編輯:sp [filename] 開啟一個新視窗,如果有加 filename , 表

示在新視窗開啟一個新檔案,否則表示兩個視窗為同一個檔案內容

[ctrl]+w+ j[ctrl]+w+↓ 按鍵的按法是:先按下 [ctrl] 不放, 再按

下 w 後放開所有的按鍵,然後再按下 j ( 或向下方向鍵 ) ,則游標可移動到下方的視窗

[ctrl]+w+ k[ctrl]+w+↑ 同上,不過游標移動到上面的視窗:vsp [filename] 同 sp ,差別為視窗左右分割[ctrl]+w+ h[ctrl]+w+← 游標移動到左方的視窗[ctrl]+w+ l[ctrl]+w+→ 游標移動到右方的視窗[ctrl]+w+ q 結束離開,等同於 :q

Page 17: Linux Programming Tutoring

• 如果 emacs 是在 X 視窗啟動,則會自動開啟一個新視窗,如果不想如此可以下命令時加入 – nw 選項:

emacs 快速入門

$emacs –nw

基本指令C-x C-f 開啟新檔或舊檔C-x C-s 存檔C-x C-w 另存新檔C-x C-c 離開註: C-x 代表 Control x

Page 18: Linux Programming Tutoring

emacs常用指令C-b 或 ← 游標向左移動一個字元C-n 或 ↓ 游標向下移動一個字元C-p 或 ↑ 游標向上移動一個字元C-f 或 → 游標向右移動一個字元C-v 螢幕『向下』移動一頁M-v 螢幕『向上』移動一頁M-b 游標向左移動一個字 (word)M-f 游標向右移動一個字 (word)C-a / M-a 移動到行首 / 句首 C-e / M-e 移動到行尾 / 句尾註: M-x 代表 META x 若沒 META 鍵通常為 [ESC] 鍵

Page 19: Linux Programming Tutoring

emacs常用指令M-< 移動到檔頭 M-> 移動到檔尾C-d 刪除游標後一個字元Backspace 刪除游標前一個字元M-Backspace 刪除游標前一個字 (word)M-d 刪除游標後一個字 (word)C-k / M-k 刪除從游標所在到行尾 / 句尾C-@ 或 C-Space 再 C-w

先按 C-@ 再移動游標後按 C-w則刪除這範圍內的字

C-u 用來設定數字參數例如: C-u 20 C-n 向下移動 20 行

C-_ 或 C-x u Undo

C-g 取消某指令

Page 20: Linux Programming Tutoring

emacs複製和貼上C-y yanking只要用 kill (C-k, M-k等 ) 刪除,超過

一個字的資料, emacs 就會把它存起來,然後 C-y 可以把它叫出來。功能跟 Cut & Paste 一樣。 Kill 和 delete 不一樣,只有被 kill 掉的東西才能用 yank 吐回來。游標在同一地方不動,連續 kill掉的資料會被當成一次 kill掉的, yank 時會一起回來。

M-w 先用 C-Space 或 C-@ 設,然候把游標移到另一端,按 M-w 就可以把 mark 到 point 間的字存到 kill ring 上。

Page 21: Linux Programming Tutoring

emacs搜尋相關指令C-s 向後搜尋C-r 向前搜尋

• 找到了之後按 C-g 可以取消搜尋,跳回原來的位置

Page 22: Linux Programming Tutoring

emacs視窗相關指令C-x 2 水平分割視窗C-x 3 或 F2 垂直分割視窗C-x > 視窗向右捲動C-x < 視窗向左捲動C-x o 切換至另一視窗C-x 0 關閉目前視窗C-x 1 關閉其他視窗,僅留此視窗C-x b 切換 bufferC-x k 關閉當前 bufferC-x C-b 列出目前所有編輯中的緩衝區清單

Page 23: Linux Programming Tutoring

emacs特殊功能M-x shell 在 emacs 中開啟一個 shellM-! 執行 external shell command

M-x dired 或 C-x d a file manager

M-x tetris 俄羅斯方塊M-x hanoi Towers of Hanoi game

M-x doctor Emacs psychotherapist

M-x calculator calculator

M-x calendar calendar

M-x phases-of-moon 查詢月相M-x compile Invokes make

M-x gdb Invokes gdb

Page 24: Linux Programming Tutoring

Reference• vim

– http://linux.vbird.org/linux_basic/0310vi.php– http://en.wikipedia.org/wiki/Vim_%28text_editor

%29

• emacs– http://www.gnu.org/software/emacs/tour/– http://en.wikipedia.org/wiki/Emacs– http://www.gnu.org/software/chinese/manual/TUT

ORIAL.zh– http://shelandy.blogspot.com/2008/01/eamcs.html