Linux系統(tǒng)中編輯文件命令的知識詳解
Linux系統(tǒng)中的vi命令是Visual Interface的簡稱,是一個文件編輯命令。那么下面由學(xué)習(xí)啦小編為大家整理了linux系統(tǒng)中編輯文件命令的知識詳解,希望對大家有幫助!
Linux系統(tǒng)中編輯文件命令的知識詳解
vi 命令介紹
vi 是”Visual Interface” 的簡稱,它在Linux 上的地位就仿佛Edit 程序在DOS上一樣。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對其進(jìn)行定制,這是其他編輯程序所沒有的。
vi 不是一個排版程序,它不象Word 或WPS 那樣可以對字體、格式、段落等其他屬性進(jìn)行編排,它只是一個文本編輯程序。
vi 沒有菜單,只有命令,且命令繁多。限于篇幅,本文只介紹常用的命令。
Vi 有三種基本工作模式:命令行模式,文本輸入模式和末行模式。
命令行模式:
任何時候,不管用戶處于何種模式,只要按一下“ESC” 鍵,即可使vi 進(jìn)入命令行模式;當(dāng)在shell 環(huán)境下輸入vi 命令啟動vi 編輯器時,也是處于該模式下。
在該模式下 ,用戶可以輸入各種合法的vi 命令,用于管理自己的文檔。此時從鍵盤上輸入的任何字符都被當(dāng)作編輯命令來解釋,若輸入的字符是合法的vi 命令,則vi 在接受用戶命令之后完成相應(yīng)的動作(但需注意的是,所輸入的命令并不在屏幕上顯示出來)。若輸入的字符不是vi 的合法命令,vi 會響鈴報警。
文本輸入模式:
在命令模式下輸入插入命令 i、 附加命令a 、打開命令 o、 修改命令c 、取代命令r 或替換命令s 都可以進(jìn)入文本輸入模式。在該模式下,用戶輸入的任何字符都被vi 當(dāng)做文件內(nèi)容保存起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按“ESC” 鍵即可。
末行模式:
在命令模式下用戶按“:” 鍵即可進(jìn)入末行模式下,此時Vi 會在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:” 作為末行模式的提示符,等待用戶輸入命令。多數(shù)文件管理命令都是在此模式下執(zhí)行的(如把編輯緩沖區(qū)的內(nèi)容寫到文件中等)末行命令執(zhí)行完后,vi 自動回到命令模式。
若在末行模式下輸入命令過程中改變了主意, 可按“ESC” 鍵或用退格鍵將輸入的命令全部刪除之后,再按一下退格鍵,即可使vi 回到命令模式下。
Linux系統(tǒng)中編輯文件的常用命令
---- 1.光標(biāo)命令
k、j、h、l——上、下、左、右光標(biāo)移動命令。雖然您可以在Linux中使用鍵盤右邊的4個光標(biāo)鍵,但是記住這4個命令還是非常有用的。這4個鍵正是右手在鍵盤上放置的基本位置。
nG——跳轉(zhuǎn)命令。n為行數(shù),該命令立即使光標(biāo)跳到指定行。
Ctrl G——光標(biāo)所在位置的行數(shù)和列數(shù)報告。
w、b——使光標(biāo)向前或向后跳過一個單詞。
---- 2.編輯命令
i、a、r——在光標(biāo)的前、后以及所在處插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改變(置換)/刪除光標(biāo)所在處的單詞的命令 (c=change、d=delete)。
x、d$、dd——刪除一個字符、刪除光標(biāo)所在處到行尾的所有字符以及刪除整行的命令。
---- 3.查找命令
---- /string、?string——從光標(biāo)所在處向后或向前查找相應(yīng)的字符串的命令。
---- 4.拷貝復(fù)制命令
---- yy、p——拷貝一行到剪貼板或取出剪貼板中內(nèi)容的命令。
擴展:Linux系統(tǒng)中編輯文件命令的常見問題及應(yīng)用技巧
---- 1.在一個新文件中讀/etc/passwd中的內(nèi)容,取出用戶名部分。
---- vi file
---- :r /etc/passwd 在打開的文件file中光標(biāo)所在處讀入/etc/passwd
---- :%s/:.*//g 刪除/etc/passwd中用戶名后面的從冒號開始直到行尾的所有部分。
---- 您也可以在指定的行號后讀入文件內(nèi)容,例如使用命令“:3r /etc/passwd”從新文件的第3行開始讀入 /etc/passwd的所有內(nèi)容。
---- 我們還可以使用以下方法刪掉文件中所有的空行及以#開始的注釋行。
---- #cat squid.conf.default | grep -v '^$' | grep -v '^#'
---- 2.在打開一個文件編輯后才知道登錄的用戶對該文件沒有寫的權(quán)限,不能存盤,需要將所做修改存入臨時文件。
---- vi file
---- :w /tmp/1 保存所做的所有修改,也可以將其中的某一部分修改保存到臨時文件,例如僅僅把第20~59行之間的內(nèi)容存盤成文件/tmp/1,我們可以鍵入如下命令。
---- vi file
---- :20,59w /tmp/1
---- 3.用VI編輯一個文件,但需要刪除大段的內(nèi)容。
---- 首先利用編輯命令“vi file”打開文件,然后將光標(biāo)移到需要刪除的行處按Ctrl G顯示行號,再到結(jié)尾處再按Ctrl G,顯示文件結(jié)尾的行號。
---- :23,1045d 假定2次得到的行號為23和1045,則把這期間的內(nèi)容全刪除,也可以在要刪除的開始行和結(jié)束行中用ma、mb命令標(biāo)記,然后利用“:'a,'bd”命令刪除。
---- 4.在整個文件的各行或某幾行的行首或行尾加一些字符串。
---- vi file
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整個文件每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整個文件中替換“string1”成“string2”。
---- :3,7s/string1/string2/ 僅替換文件中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s為substitute,%表示所有行,g表示global。
---- 5.同時編輯2個文件,拷貝一個文件中的文本并粘貼到另一個文件中。
---- vi file1 file2
---- yy 在文件1的光標(biāo)處拷貝所在行
---- :n 切換到文件2 (n=next)
---- p 在文件2的光標(biāo)所在處粘貼所拷貝的行
---- :n 切換回文件1
---- 6.替換文件中的路徑。
---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路徑/usr/bin換成/bin。也可以使用命令“:%s//usr/bin//bin/g”實現(xiàn),其中“”是轉(zhuǎn)義字符,表明其后的“/”字符是具有實際意義的字符,不是分隔符