220 likes | 434 Views
Linux 基礎學習. Chapter 8 Use Linux Text Editor VBird 2005/08/04. 課程目標. 認識 vi 與 vim 實際操作 vi 利用 vim 的相關功能 Linux 與 DOS 格式的斷行字元. 內容. 使用 vi 使用 vim 的額外功能 Unix 與 dos 純文字檔之斷行格式. 使用 vi. Linux 上的文書處理軟體: vi emacs xemacs joe e3 xedit kedit pico
E N D
Linux 基礎學習 Chapter 8 Use Linux Text Editor VBird 2005/08/04 Linux基礎--vi 文書處理器
課程目標 • 認識 vi 與 vim • 實際操作 vi • 利用 vim 的相關功能 • Linux 與 DOS 格式的斷行字元 Linux基礎--vi 文書處理器
內容 • 使用 vi • 使用 vim 的額外功能 • Unix 與 dos 純文字檔之斷行格式 Linux基礎--vi 文書處理器
使用 vi • Linux 上的文書處理軟體: • vi • emacs • xemacs • joe • e3 • xedit • kedit • pico • 所有 Unix like 的機器上都會有的是 vi,但增強版的 vim 可以作為『程式編輯器!』 Linux基礎--vi 文書處理器
使用 vi(續) • 直接輸入 vi 時: Linux基礎--vi 文書處理器
使用 vi(續) • vi 後直接加檔案: Linux基礎--vi 文書處理器
使用 vi(續) • Vi 的三種模式: • 一般模式: command mode • 可進行刪除、複製、搜尋、取代等 • 編輯模式: input mode • 可進行資料的輸入 • 螢幕左下角會出現 –INSERT– 或 –REPLACE– • 指令列模式: command-line mode • 可進行儲存、讀取其他檔案等 Linux基礎--vi 文書處理器
使用 vi(續) • Vi 的三種模式切換方法(ps: 編輯與指令列不可直接互換) Linux基礎--vi 文書處理器
使用 vi(續) • 一般模式的游標移動: • 單一字元移動: • 可使用方向鍵移動游標 • 可使用 hjkl 四個按鍵 (左下上右) • 0:移動到該行行首 • $:移動到該行行尾 • 整頁翻動: • [ctrl] + f :向下移動一頁(等於 pagedown) • [ctrl] + b :向上移動一頁(等於 pageup) • 1G:到第一行,相當於 gg • G:到最後一行 • [number]G:到第 number 行 • [Number][Enter]:向下移動 number 行 • 螢幕上游標移動: • H(最上方)、M(中間)、L(最下方一行) 的行首 Linux基礎--vi 文書處理器
使用 vi(續) • 一般模式的複製與貼上 • 刪除: • x:向右刪除字元 (相當於 delete) • X:向左刪除字元 (相當於 backspace) • [Number]x:向右刪除 number 個字元 • dd:刪除一整列 • [Number]dd:刪除 number 列 • d1G:刪除游標到第一行的所有資料 • dG:刪除游標到最後一行的所有資料 • 複製: • yy:複製一行 • [Number]yy:複製 number 行 • p, P:貼上複製的資料 • J:連結兩行成為一行 Linux基礎--vi 文書處理器
使用 vi(續) • 一般模式的搜尋與取代: • 搜尋: • /searchword:向下尋找 • ?searchword:向上尋找 • n :重複上一個搜尋動作 • N :重複『反向』上一個搜尋動作 • 取代: • n1,n2s/oldword/newword/gc:取代 n1 到 n2 行之間的 oldword 成為 newword 且允許決定是否要替換 • 1,$s/old/new/g:取代第一到最後一行的 old 成為 new • 其他特殊指令: • 重複上一個動作:『.』 • 復原上一個動作:u • 重作上一個動作: [Ctrl]+r Linux基礎--vi 文書處理器
使用 vi(續) • 一般模式進入編輯模式: • 新增資料: • a :在游標所在處的下個字元開始插入 • A :在游標所在行的最後一個非空白字元後插入 • i :在游標所在處的字元開始插入 • I :在游標所在行的第一個非空白字元處插入 • o:在游標所在處的下一行新增新的一行; • O :在游標所在處的上一行新增新的一行; • 取代: • r :僅取代『游標所在處的單一字元』 • R:一直取代,直到 [Esc] 按下為止。 • [ESC] (回到一般模式) Linux基礎--vi 文書處理器
使用 vi(續) • 指令列模式: • 存檔與離開: • :q 離開該檔案 • :w 儲存檔案 • :wq! 『強制』儲存後離開該檔案 • :e! 回到檔案的原始狀態 • ZZ 不儲存離開或儲存後離開 • 讀取其他檔案或另存新檔 • :r file 在此檔案中,讀入 file 檔案的資料 • :w file 將目前的資料寫入 file 這個新檔 • :n1,n2 w file 將目前資料的 n1 到 n2 行寫入 file 中。 • 執行其他動作: • :!command 額外進行其他動作 Linux基礎--vi 文書處理器
使用 vi(續)-- 練習 • 利用 vi 建立一個檔名為 /root/newman.conf • 將 /etc/man.config 的資料讀進來 • 在第一行輸入 • This file comes from /etc/man.config • 搜尋 MANPATH 取代成為 mywebname • 搜尋 mywebname 字串 • 取消高亮度 • 刪除第 51 到 60 行 • 複製第 1~10 行,並且在第 20 行後貼上(新的行在 21 開始) • 連結第2與第3行 • 復原上個動作 • 強制儲存後離開 Linux基礎--vi 文書處理器
使用 vi(續)-- 練習二 • 以底下指令捉取檔案: • wget http://linux.vbird.org/linux_basic/0310vi/man.config • 請在 /tmp 這個目錄下建立一個名為 vitest 的目錄; • 進入 vitest 這個目錄當中; • 將 /etc/man.config 拷貝到本目錄底下(或由上述的連結下載 man.config ); • 使用 vi 開啟本目錄下的 man.config 這個檔案; • 移動到第 58 行,向右移動 40 個字元,請問您看到的雙引號內是什麼目錄 • 移動到第一行,並且向下搜尋一下『 bzip2 』這個字串,請問他在第幾行 • 接著下來,我要將 50 到 100 行之間的 man 改為 MAN,並且一個一個挑選是否需要修改,如何下達指令? • 修改完之後,突然反悔了,要全部復原,有哪些方法? • 我要複製 51 到 60 行這十行的內容,並且貼到最後一行之後; • 刪除 11 到 30 行之間的 20 行; • 將這個檔案另存成一個 man.test.config 的檔名; • 去到第 29 行,並且刪除 15 個字元; • 儲存後離開吧! Linux基礎--vi 文書處理器
使用 vi(續) • 關於檔案的回復與暫存檔案的意義: • 使用 vi 時,會主動的產生 .filename.swp 檔案; • 若使用 vi 時,出現如下畫面: • Swap file "/path/to/.filename.swp" already exists! • [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort: • 表示可能: • 該檔案正在被其他程式所編輯; • 該檔案上次編輯時,發生不明的離線所致。 • 解決方案: • 選擇 R (recover) 將資料救回來; • 將與該檔案同時存在的 .filename.swp 刪除; Linux基礎--vi 文書處理器
使用 vim 的額外功能 • 一般模式底下, vim 的額外功能 • 區塊選擇: • v 字元選擇,會將游標經過的地方反白選擇! • V 行選擇,會將游標經過的行反白選擇! • [Ctrl]+v 區塊選擇,可以用長方形的方式選擇資料 • y 將反白的地方複製起來 • d 將反白的地方刪除掉 • 可以使用 p 來將資料給他貼在不同的區域! • 多檔案編輯功能: vi file1 file2 file3 file4 .. • :n 編輯下一個檔案 • :N 編輯上一個檔案 • :files 列出目前這個 vim 的開啟的所有檔案 Linux基礎--vi 文書處理器
使用 vim 的額外功能(續) • 一般模式底下, vim 的額外功能(續) • 視窗分割功能: • :sp [filename] 開啟一個新視窗,可加與不加 filename。 • [ctrl]+wj 游標可移動到下方的視窗。 • [ctrl]+wk 同上,不過游標移動到上面的視窗。 • [ctrl]+wq 其實就是 :q 結束離開啦! • VIM 的操作環境設定: • :set nu 設定行號 • :set hlsearch 設定是否將搜尋的字串反白 • :set autoindent 是否自動縮排? • :set backup 是否自動儲存備份檔?一般是 nobackup 的 • 如果設定 backup 的話,那麼當你更動任何一個檔案時,則原始檔案會被另存成一個檔名為 filename~ 的檔案。 Linux基礎--vi 文書處理器
使用 vim 的額外功能(續) • VIM 的操作環境設定: • :set ruler 顯示或不顯示狀態列(最下方)! • :set showmode 是否要顯示 --INSERT-- 之類的字眼 • :set backspace=(012) 設定倒退鍵的功能: • 2 在編輯模式中,可以利用倒退鍵 來刪除任意字元 • 0 與 1 僅可刪除剛剛輸入(且尚未離開游標所在行) 的字元。 • :set all 顯示目前所有的環境參數設定值。 • :syntax (off|on) 是否依據程式相關語法顯示不同顏色? • 可以依據檔案的語法來以顏色顯示語法; • 可以進行語法的除錯! • 但某些螢幕可能會造成色差,不容易看清楚字元。 Linux基礎--vi 文書處理器
使用 vim 的額外功能(續) • VIM 的操作環境設定: • 相關環境設定檔 • 系統設定檔:/etc/vimrc • 個人設定檔:~/.vimrc • vim 使用記錄檔:~/.viminfo • 環境設定範例: vi ~/.vimrc :set hlsearch :set backspace=2 :set autoindent :set rulet :set showmode :syntax on Linux基礎--vi 文書處理器
使用 vim 的額外功能(續) • 練習: • 我們可以利用 locate 進行檔案的搜尋,可以進行資料庫的更新。資料庫更新設定檔?如何修改成每日進行資料庫更新? Linux基礎--vi 文書處理器
Unix 與 dos 純文字檔之斷行格式 • 不同系統的斷行設定: • Unix 系統:使用 LF 單一符號表示換行 • DOS 系統:使用 CR 與 LF 兩個符號表示換行,即為 CRLF • 如何察看? • cat –A filename • 檔案格式如何轉換 • dos2unix, unix2dos • -k :包留 mtime 不變; • -m :將轉換的資料輸出到新檔。 • 範例: • unix2dos -k -n /etc/man.config /tmp/man.config.dos • Dos 檔案斷行字元的困擾: • 導致 script 無法順利執行 (enter 才開始!) Linux基礎--vi 文書處理器