King Zone - vi
type: channel
link: https://kingtam.win/tag/vi/
items: Linux 的命令基本用法 - vim 編輯器

Linux 的命令基本用法 - vim 編輯器
type: item
date: 2021-07-07T09:48:00+08:00
description: Linux 的命令基本用法 - vim 編輯器Vimlogo.png前言:nano是簡單好用的文件編輯器，但熟練vim後會讓你在編輯處理上更得心應手。大部份內容取自鳥哥的vim 程式編輯器教學 vim編輯器三種模式:一般模式 (normal mode)一般模式可以移動光標，複製、貼上、刪除等動作編輯模式 (insert mode)可以進行文件編輯(即一般模式以外的動作)命令模式 (command-line mode)可以進行顯示行數、搜尋、替換、儲存及退出等動作centos7_vi-mode.gif如圖示(來自鳥哥) ESC 是退回到一般模式，編輯模式、命令模式切換都要經一般模式才可以。一般模式 (Normal mode)按鍵說明移動游標的方法2020-06-23_112920.png[[h]] 或 向左方向鍵(←)游標向左移動一個字元[[j]] 或 向下方向鍵(↓)游標向下移動一個字元[[k]] 或 向上方向鍵(↑)游標向上移動一個字元[[l]] 或 向右方向鍵(→)游標向右移動一個字元如向下移動 20 列，可以使用 "20j" 或 "20↓" 的組合按鍵即可！2020-06-23_150634.png[[Ctrl]] + [[f]]螢幕『向下』移動一頁，相當於 [Page Down]按鍵[[Ctrl]] + [[b]]螢幕『向上』移動一頁，相當於 [Page Up] 按鍵[[0]] 或功能鍵[[Home]]這是數字『 0 』：移動到這一行的最前面字元處[[$]] 或功能鍵[[End]]移動到這一行的最後面字元處[[gg]]移動到這個檔案的第一行，相當於 1G 啊！[[G]]移動到這個檔案的最後一行[[n]]+[[Enter]]n 為數字。游標向下移動 n 行搜尋和取代/word向游標之下尋找一個名稱為 word 的字串。使用 /word 配合 n(向下搜尋下一個) 及 N (向前搜尋上一個)，可以讓你重複的找到一些你搜尋的關鍵字！:1,20s/word1/word2/g在第 1 與 20 列之間尋找 word1 這個字串，並將該字串取代為 word2:1,$s/word1/word2/g從第一列到最後一列尋找 word1 字串，並將該字串取代為 word2:1,$s/word1/word2/gc同上，但在取代前顯示確認 (confirm) 是否需要取代！:10,22s/^/#/g起始行號(10),結束行號(22)s/^/註釋符/g 插入註釋。刪除無內容的空白行列一般模式 (normal mode)註解:g/^$/d刪除空白行。:g/^\s*$/d刪除空白行和只有空格[Space]沒有內容的空白行。刪除、複製與貼上[[x]],[[X]]x 為向後刪除一個字元 (相當於 [del] 按鍵)，X 為向前刪除一個字元(相當於 [Backspace]鍵)dd刪除游標所在的那一整行nddn 為數字。刪除游標所在的向下 n 列，例如 20dd 則是刪除 20 行yy複製游標所在的那一行nyyn 為數字。複製游標所在的向下 n 列，例如 20yy 則是複製 20 行[[p]],[[P]]p 為將已複製的資料在游標下一列貼上，P 則為貼在游標上一行[[u]]復原前一個動作[[Ctrl]]+[[r]]重做上一個動作[[.]]是小數點！意思是重複前一個動作的意思返回編輯模式 (insert mode)左下角處會出現INSERT或REPLACE的字眼[[i]],[[I]]進入插入模式(Insert mode)： i 為『從目前游標所在處插入』， I 為『在目前所在行的第一個非空白字元處開始插入』。[[a]],[[A]]進入插入模式(Insert mode)： a 為『從目前游標所在的下一個字元處開始插入』， A 為『從游標所在行的最後一個字元處開始插入』[[o]],[[O]]進入插入模式(Insert mode)： 這是英文字母 o 的大小寫。o 為『在目前游標所在的下一行處插入新的一行』； O 為在目前游標所在處的上一行插入新的一行[[r]],[[R]]進入取代模式(Replace mode)： r 只會取代游標所在的那一個字元一次；R會一直取代游標所在的文字，直到按下 ESC 為止；[[Esc]]退出編輯模式(回到一般模式)返回命令模式 (command-line mode):w將編輯的資料寫入硬碟檔案中:q離開 vi:wq儲存後離開，若為 :wq! 則為強制儲存後離開:set nu顯示行號，設定之後，會在每一列的字首顯示該列的行號:set nonu與 set nu 相反，為取消行號！:! command暫時離開 vim 執行 command 的顯示結果！ 返回額外: 配合bash的工作管理bash的工作管理可以在Terminal中自由切換到…