linux之文本编辑器
管理員在進行系統操作的時候,不可避免地會對文本進行修改,如進行各種服務程序配置文件的改動,使程序對用戶提供不同的服務效果。在本章我們向大家介紹Linux上常見的編輯器ed、vi、emacs,同時以vi為例,講解Linux中的文本編輯,為大家成為優秀的系統管理員打下基礎。
?
【重點內容】
???????? Linux編輯器簡介
???????? vi的打開和退出
???????? vi 的三種模式
???????? 在文件中快速移動光標
???????? 在文件中替換和刪除文本
???????? 撤銷和重復編輯命令
???????? 移動和復制文本
4.1??? Linux的文本編輯器
4.1.1?? ed
在早期的unix平臺上,ed可以說是唯一的編輯工具。它是一個很古老的行編輯器,vi這些編輯器都是從ed 演化而來。行編輯器使用起來很不方便,每次只能對一行進行操作,。而后面介紹的pico、vi、emacs等全屏幕編輯器可以對整個屏幕進行編輯,用戶編輯的文件直接顯示在屏幕上,修改的結果可以立即看出來,克服了行編輯的那種不直觀的操作方式,便于用戶學習和使用,具有強大的功能。
Linux雖然現在通用vi來編輯,但也在系統中保留了ed,只是沒有人會去用罷了。
4.1.2?? pico
pico很象DOS下的edit程序,打開之后,屏幕下方有操作的提示信息,功能簡單,也可以完成操作,一步一步做就可以了。pico的功能鍵直接列在屏幕的最下方,可以做為幫助來指導操作。
?????????????????????????????????????????????????????????????????????????????????????????
字符界面下的pico
這個工具對初學Linux是有幫助的,畢竟Linux中的新東西太多了,可以從簡單熟悉的東西入手,在建立了基本的概念之后,再來學習vi等復雜的工具。這不失為一種選擇。
4.1.3?? vi和vim
vi在是Unix平臺上歷史悠久的編輯器,它的命名是取“visual”(可視化的)這個單詞的前兩個字母,vi是Unix平臺上可視化編輯器(或者說基于屏幕的編輯器)的代表,由加州大學和伯克利大學等機構,以原來的Unix行編輯器ed等為基礎開發出來的,是一個使用多年,流傳非常廣泛的編輯工具。在Linux誕生的時候,vi與基本Unix應用程序一樣被保留下來,成為我們管理系統的好幫手。
vim意為“vi iMproved”,改進了的vi,由Bram Moolenaar編寫。Bram于1989年新買了一臺計算機,在上面使用vi的時候覺得很多地方都不太方便,所以他找到了Stevie的源代碼,在上面進行改進。在這期間還有Sven等很多人的加入,持續地改進,直到我們現在使用得很廣泛的6.x版本。
vim與vi相比,增加了更多的特性,如彩色與高亮顯示,可以使我們的編輯工作更輕松。通過設置,vim會自動檢測文件中內容的類型,并以不同的顏色進行高亮顯示,如注釋變成藍色,關鍵字變成褐色,而字符串變成紅色等,與vi傳統的黑白顯示模式相比,vim更易讀易用。另一個有趣的功能是vim支持從右到左輸入字符,這在使用一些特殊語言(如Farsi)進行編程時是比較有用的。在vim中,我們還可以使用多窗口顯示,在一個屏幕中同時對多個文件進行操作。我們還可以通過.vimrc文件定制的方法,來使用戶在打開vi的時候獲得自己熟悉的和適用于自己特殊目的的環境。
在編輯那些比較大的文件特別是程序文件的時候,vim比vi更方便一些。
4.1.4?? emacs
emacs是Open Source的領袖Richard Stallman開發的,是Linux發燒友和程序員的終極武器,其功能大大超過了文本編輯。我們可以在emacs中進行文本編輯,也可以編寫程序代碼,做程序調試,編輯HTML/SGML,讀News,收發e-mail…,而且emacs經過配置后還支持中文。不過功能的強大往往意味著操作方法的復雜,emacs也是如此,必須記非常多的命令才能使用它。
??????????????????????????????????????????????????????????
啟動了功能菜單的emacs
很多UNIX程序員每天開機的第一件事就是打開emacs,看看自己的郵箱,然后開始編程工作,看其他人在News Group中討論問題…emacs就是他們的一天,難怪有人說emacs是個操作系統。,目前emacs有terminal和Xwindow版本,terminal版是比較難操作的,而Xwindow版因為支持鼠標,所以相對容易上手一些。在自己的Linux水平從中級向高級發展的時候,不妨把emacs做為選擇對象。
?
4.2??? vi編輯器:打開和退出
vi是一個讓人又恨又愛的東東,恨的是它有非常多的參數與使用方法,讓人記不勝記;還有不同與一般編輯器的“三種模式”,使初學者頭暈眼花,應接不暇。但隨著不斷的使用,我們會對vi漸漸熟悉,一定越來越會發現它竟如此快捷方便。vi是幫我們管好Linux、Unix的強大工具,如果我們對編程開發有興趣的話,將會發現利用vi,我們在這方面更能發揮自己的才能。
我們先來看一下如何簡單地進入和退出vi:
4.2.1?? 進入vi
?????? vi是一個在命令行下使用的編輯工具,在提示符下輸入vi即可進入
???????????????????? # vi?????????????????????????????????????????????????? ?????????????
?????? 或者使用vi加上所需編輯的文件名,可以直接開始對文件的修改
????? # vi /etc/services?????????????????????????????????????????????
4.2.2?? vi的退出
退出時,只要在底線模式(詳見4.3節)。下輸入“q”,再回車就可以了。
技巧
使用“vi + 文件名”打開文件。執行vi時,如果使用加號后面跟文件名,就可以在進入文件的時候使光標處在文件最后一行的位置,便于添加內容。如“vi + /etc/hosts”。
使用“vi + 數字文件名”,可以直接從某一行開始編輯文件。如“vi + 23 /etc/services”,就是打開serivces,從23行開始編輯。
4.2.3?? 打開文件、保存文件和退出 vi 編輯器
存盤和退出、設置行號操作等功能,輸入“:”進入底線模式。
在屏幕最下面一行將出現一個“:”符號。這時,輸入不同的命令符并回車,有不同的效果:
w命令:
把當前的文件保存起來,然后可以繼續編輯。
q命令:
退出vi。
這兩個命令符也可以組合起來,“wq”回車,就是保存后退出了。
x命令:
x = wq,保存退出。
! 命令:強制執行。(常用)
在你想保存一個屬性是“只讀”的文件的時候,系統會提示
E45: 'readonly' option is set (add ! to override)
文件只讀,要用“!”符號來強制寫入,
“w!”
就可以存盤了。
另外是修改之后,發現自己修改的內容太混亂,不想存盤而直接退出,這時候是無法在底線模式下輸入“q”退出的,vi會提示如下錯誤信息:
E37: No write? since last change (add ! to override)
系統會提示你在修改之后沒有存盤,不讓你退出。這時候同樣可以使用“!”符號:
“q!”
就可以不管三七二十一,直接退出了。同樣地,強制存盤退出也可以組合出來:
“wq!”或者是“x!”
在保存的時候,如果加上文件名,就相當于另存為,例如:
“:w newfile”
就可以把當前的文件保存為newfile。
技巧
在保存時使用“:x,x1 w newfile”,就可以把從x行到x1行的內容另存為newfile。
4.3??? vi 的三種模式
剛剛用vi的朋友,總會問到:“打開之后,我的vi不能輸入字符,按上下左右鍵光標也沒法移動,機器光是吱吱叫,這是怎么回事?”很簡單,你必須要先進入Insert模式。對vi的三種模式搞不清,是初學者的第一個難題。
三種模式是vi的特點,是與其他編輯器顯著不同的,在不同的模式下,完成不同類型的操作。想讓vi幫你做事情,先了解下面的內容吧。
?
4.3.1?? vi 的輸入模式(Insert mode)
初用vi,大概最容易掌握的就是Insert模式了。簡單地說,Insert模式讓我們可以輸入字符和文字。當我們編輯一個系統配置文件,修改一個腳本的內容,都要敲入字符,這最終都要在Insert模式下進行。剛才那位仁兄無法輸入字符,就是因為沒有進入vi的輸入模式。
其實他只要在進入vi之后,把光標移動到要輸入字符的相應位置,敲一下“i”鍵,就可以輸入了。我們會看到屏幕最下方顯示“插入”的字樣(如英文為默認語言,則為Insert)。這時候就是在輸入模式下了,想寫什么,就寫什么。進入輸入模式還有其他的方法,大家在這里先記住“i”鍵,我們等一下再看其他的進入方式。
????????????????????????????????????????????????????????
進入輸入模式時,會顯示“INSERT”
輸入模式的功能
輸入模式就這么一個功能:字符輸入,最簡單。
?
4.3.2?? vi 的命令模式(Command mode)
命令模式是vi中管理光標和其他一些工作的。我們在編輯文件的時候,需要把光標移來移去,這時候我們需要進入命令模式;刪除字符,要進入命令模式;想進行移動和復制某段文字的操作,還是要進入命令模式。命令模式和輸入模式結合起來,讓我們可以在文件中上上下下,添加修改,完成我們的編輯。
命令模式的功能
移動光標:這已經介紹過,把光標移動到屏幕不同的位置。
刪除字符:可以一個一個字符地刪除,也可以成行、成段地刪除。
復制或者移動字符:這是編輯器里不可缺少的功能,vi中也不例外。
我們將在后面功能鍵部分著重地講一下。
?
4.3.3?? vi 的底線模式(Last line mode)
對一般的使用者來說,底線模式最重要的一個功能,就是讓我們可以保存編輯工作的結果,如果沒有存盤而異常退出,那么非常不幸,需要重新再來修改一遍。當我們完成編輯,想把結果保存起來時,就要進入底線模式。
?
底線模式的功能
底線模式中可以執行各種命令,常見的包括:
保存結果:這已經介紹過,在此就不再贅述了。
查找字符:在編輯大段文字的時候,想找到一個詞,一個字符串或是其他任何內容,都可以用底線模式下的查找功能。
退出vi。編輯完成后,也是由這里退出的。
列出文件的行號:對多行的文件來說,列出行號有利于定位文字,也是很方便的一個功能。
光標移到某一行:列出行號后,當然也會想讓光標方便地移到某一行上,快速定位。
三種模式中,以底線模式的功能最復雜,涉及的方面也多,大家要注意掌握。
4.3.4?? vi 三種模式的切換
vi在編輯中,有時需要輸入,有時需要移動光標,最后是保存、退出,這些操作是在三種模式下執行各自的功能,所以三種模式下的切換方法也是需要掌握的基本功。
首先要記住的是命令模式是切換的“中心”,由命令模式可以直接進入其他兩種模式,而輸入模式需要進入底線模式時,首先要進入命令模式,然后由這里進入底線模式;反之亦然。
????????????????????????????????????????????????????????????????????????????????????????????
命令模式是三種模式的轉換中心
4.3.4.1??? 命令模式進入輸入模式
前面已經介紹過,在命令模式下,敲擊“i”鍵就可以進入輸入模式,另外敲擊“a”和“o”(字母)鍵也能進入,三者的區別如下:
i:在當前光標所在之處插入,開始輸入字符。(最常用)
a:在當前光標所在的后一個位置插入,開始輸入字符(最常用)
o:在當前光標所在行的下面新創建一行,并在行的第一個位置開始輸入字符。(最常用)
這并不是全部的進入方法,但卻是最常用的。大家可以根據不同的情況選取。下面相應地還有一些大寫字母的進入方式,我們按住Shift+大寫字母(I、A、O),也可以進入輸入模式,但光標移動的位置不同:
I:光標移動到本行的行首,開始輸入(常用)
A:光標移動到本行的末尾,開始輸入(常用)
O:與“o”相對,在當前光標所在行的上面新創建一行,并在行的第一個位置開始輸入字符。(常用)
4.3.4.2??? 命令模式進入底線模式
有兩種方法可以進入,一種是敲“:”,一種是敲“/”鍵。我們會發現光標從原來的位置變到了屏幕的最下面一行,在后面就可以輸入相應的底線模式命令。
“:”鍵:執行存盤、退出、參數設置和shell底線模式命令等功能。
“/”鍵(或者“?”也可以):如果要執行查找功能,敲擊此鍵。
????????????????????????????????????????????????????????????????
底線模式模式的提示符
技巧
用“%”進行括號匹配
此功能對程序員比較有用。按下“%”時,vi首先向后找到第一個括號如“(”,然后就會去找與之相配的另一邊“)”;如向右的第一個括號是“)”,vi就會去找相應的“(”。
?
5.3.4.4??? 輸入模式和底線模式進入命令模式
從這兩種模式進入命令模式,按“ESC”就可以了。
我們從下面就要開始學習在vi中進行各種編輯工作,但首先要注意做任何操作需要處于相應的模式下,否則就不會成功。在各種模式中切換是vi的基本功,請一定認真掌握和識別不同模式。
4.4??? 在文件中快速移動光標
4.4.1?? 基本的移動方式
要對正文內容進行修改,首先必須把光標移動到指定位置。移動光標的最簡單的方式是按鍵盤的上、下、左、右箭頭鍵。除了這種最原始的方法之外,用戶還可以利用 vi 提供的眾多字符組合鍵,在正文中移動光標,迅速到達指定的行或列,實現定位。
命令模式下的光標移動
k、j、h、l????? (常用)
功能分別等同于上、下、左、右箭頭鍵。可能在最初的時候不太習慣。
提示
在Linux中的vi版本中,上下左右鍵也都可以移動光標,無論在命令模式還是輸入模式中。
?
4.4.2?? 在同一行中移動光標
M(常用)
將光標移到當前屏幕的中間一行的行首。M表示Middle。
L (常用)
將光標移到當前屏幕的最下行的行首。L表示Lowest。另外:
xL將光標移到屏幕的倒數第x行。例如,3L,將光標移到屏幕的倒數第3行。
w??????????????
在指定行內右移光標,到下一個單詞的開頭。
e??????????????
在指定行內右移光標,到本單詞的末尾
b??????????????
在指定行內左移光標,到前一個單詞的開頭.
0??????????????
數字0,左移光標,到本行的開頭(注意與“I”的區別,數字0只移動而不插入)
$??????????????
右移光標,到本行的末尾(注意與“A”的區別,$只移動而不插入)。
^??????????????
移動光標,到本行的第一個非空字符。
fx
往右移動到 x 字符上,注意此操作不能移到下一行,找到最后一個字母即止。下面的Fx、tx、Tx與此相同。
Fx
往左移動到 x 字符上
tx
往左移動到 x 字符前
Tx
往左移動到 x 字符后
?
4.4.3?? 在頁面間移動光標
Ctrl+b? (大文件常用)
在文件中向上翻一頁(相當于 PageUp 鍵)
Ctrl+f???? (大文件常用)
在文件中向下翻一頁(相當于 PageDown 鍵)
H(常用)
將光標移到當前屏幕的最上行的行首。H表示Highest。
xH?????????????
將光標移到當前屏幕的第x行。例如,2H就是將光標移到當前屏幕的第2 行。注意這個當前屏幕的第2行并不一定是本文件的第二行。
和4.4.2節重復J,刪除!
?
4.4.4?? 在底線模式下移動光標
快速移動不但在命令模式中可以實現,在底線模式中也可以,我們先來看一下為文件加上行號的方法。
按“:”鍵,在屏幕最后一行出現“:”提示符的時候,輸入
“set nu”
可以給文件中的每一行加上行號,方便閱讀與編輯。注意此行號只是標注,而不是實際添加到文件里的數字。
文件中的標識行號
技巧
直接顯示光標所在行的行號。有時我們并不想用“:set nu”為文件加上行號,但又想看一下光標所在行是哪一行,可以使用“Ctrl+g”命令,就可以顯示"文件名" line 34(光標位置) of 970(總行數) --3%--(比例)等信息。
?
4.4.5?? 使用行號移動光標
在“:”提示符后面輸入數字,可以使光標直接移到相應行。在編輯大的文件的時候,這是很有幫助的功能。如上圖的光標在第4行,想馬上移到第9行,可以先輸入“:”,進入底線模式,然后輸入“9”,就可以使光標處在第9行的位置。
提示
輸入數字把光標移動到某一行,并不需要先用“set nu”加上行號,直接在“:”后輸入數字就可以。當然首先要對目標行的行號心中有數。
4.4.6?? 查找字符或者文字
在底線模式中使用“/”和“?”鍵進行查找
在命令模式中按“/”或“?”鍵,同樣可以進入底線模式,屏幕下方顯示一個“/”或“?”,并且可以查找所需的字符、文字等。直接在提示符后面輸入想要查找的內容,再回車就可以了。如查找“mail”:
“/mail”
使用底線模式的查找功能
就是從光標所在位置向后查找“mail”這個單詞,如果現在找到的不是所需的單詞,可以按“n”鍵(表示next),繼續查找。使用問號“?”,是向前查找。
4.5??? 在文件中替換和刪除文本
4.5.1?? 命令模式中的替換命令
將光標定位于文件內指定位置后,可以用其他字符來替換光標所指向的字符,或從當前光標位置刪除一個或多個字符。
rc (最常用)????????????
用字母“c”替換光標所指向的當前字符。r是replace的意思。另外:
xrc:這里x是數字。表示從光標位置起,用字母“c”替換光標后的x個字符。如:5rc用字母c替換光標所指向的后5個字符。
?
4.5.2?? 在底線模式中的替換命令
:%s/字符1/字符2/g
查找并替換字符,在底線模式下執行。可以在全文中查找字符1,然后以字符2替換。例如:
?????? “:%s/tcp/tcpv6/g “,會將全文中的tcp換為tcpv6。
x? (最常用)
刪除光標所指向的當前字符。另外:
nx:刪除光標所在位置起的后x個字符。如:3x,刪除光標所在位置起的后3個字符
dw? (常用)???????????
從光標所在位置開始,向右刪除單詞。例如,光標在“daytime”單詞的字母“y”的位置上,那么按dw會刪除“ytime”部分,留下“da”。若是在單詞的第一個字母執行此命令,則整個單詞都被刪除。另外,
xdw:刪除光標右側的x個單詞。例如:3dw,刪除光標右側的3個單詞。
db? (常用)???????????
從光標位置起,刪除左側的單詞。用法與dw一樣,只是方向相反。同樣支持xdb方式的用法,也與dw一樣。
dd (最常用)
刪除光標所在行,并去除空隙。就是說刪除后,原來的第三行會提升上來。另外:
xdd:刪除x行內容,并去除空隙。例如,3dd,刪除3行內容,并去除空隙。
d$(常用)
從當前位置刪除到行尾。
dG
從光標當前所在行開始,刪除下面所有行。做了這個操作之后,vi還會提醒“現在還剩xxx行”。
4.5.3?? 底線模式中的刪除方式
在底線模式中我們同樣可以利用行號來做整行的刪除工作。在底線模式下,我們可以輸入行號加“d”來刪除某一行:
?????? “:35 d”
表示刪除第35行。也可以一次刪除多行,把兩個行號用逗號隔開,以這兩行為起止點進行刪除:
“:35,47 d”
表示刪除文件中的35到47行。
?????? “:35,$ d”
表示從第35行刪除到最后一行。
:%d
在底線模式“:”下輸入“:%d”再回車,可以刪除全文。注意別誤用了這個命令,如果誤用,趕快用下面的撤銷命令。
4.6??? 撤銷和重復編輯命令
“u”:在命令模式中輸入“u”,是undo的意思,可以撤銷上一次的操作,最常用,反復的按u,可以退回很多次操作。
“.”:使用“.”符號可以重復本次操作。例如,使用“dd”命令刪除了一行之后,可以再按“.”鍵,每次都可以再刪除一行。
4.7??? 移動和復制文本
4.7.1?? 文本行的移動
vi中我們可以方便地將某個范圍內的文本行左右移動或從一個地方移至另外一個地方。
文本行的左右移動是在命令模式下完成的,經常用于程序編寫。
下面內容中的符號“>”為鍵盤上的大于號,“<”為鍵盤上的小于號。
>???? (按回車鍵)
將本行與下一行向右移動8個字符(一個tab)的位置
>0
只將本行向右移動8個字符的位置
>x?? (加回車)
從本行開始,將下面的x行都向右移動8個字符的位置
<?
將本行與下一行向左移動8個字符的位置
<0
只將本行向左移動8個字符的位置
<x?? (加回車)
從本行開始,將下面的x行都向左移動8個字符的位置
>>?
將本行向右移動8個字符的位置
<<?
將本行向左移動8個字符的位置
?
4.7.2?? 在底線模式中的整行移動
在底線模式中,我們可以把某一行放入另一行的下面,使用命令
“:x m x1”
就可以把第x行移動到第x1行。
粘貼和復制
從正文中刪除的內容(如字符、字或行)并沒有真正丟失,而是被剪切并復制到了一個內存緩沖區中。用戶可將其粘貼到正文中的指定位置。完成這一操作的命令是:
p
小寫字母 p,將緩沖區的內容粘貼到光標的后面
P
大寫字母 P,將緩沖區的內容粘貼到光標的前面
如果緩沖區的內容是字符或字,直接粘貼在光標的前面或后面;如果緩沖區的內容為整行正文,則粘貼在當前光標所在行的上一行或下一行。
注意上述兩個命令中字母的大小寫。vi 編輯器經常以一對大、小寫字母(如 p 和 P)來提供一對相似的功能。通常,小寫命令在光標的后面進行操作,大寫命令在光標的前面進行操作。
有時需要復制一段正文到新位置,同時保留原有位置的內容。這種情況下,首先應當把指定內容復制(而不是剪切)到內存緩沖區。完成這一操作的命令是:
yy
復制當前行到內存緩沖區。另外:
xyy:復制x行內容到內存緩沖區,例如:5yy,復制5行內容到內存緩沖區。
y$
從當前位置復制到行尾。
p(常用)
如果要粘貼到其他地方 p 就可以了。
xp
當前的字符與后一個字符交換位置。
ddp
光標所在行的上下兩行交換位置。
J
將光標所在的上下兩行合并。
4.8??? 在 vi 編輯器中與 shell交互
在vi中,我們可以在底線模式下用“!”符號來訪問Linux的Shell,進行操作。
“: !命令”
直接在!后面接著所要執行的命令就可以。例如,我們在編輯/etc/service文件時,想知道當前系統開放有哪些端口,就可以在底線模式下輸入:
“:!netstat –an | more”
就會在當前屏幕中顯示結果,完畢后會提示你用回車退出。
4.9??? vi的定制
?????? 在vim的學習中,我們已經了解了它的基本功能。vim是一個強大的工具,可以支持多種Linux使用者的操作。普通使用者,系統管理員和程序員使用的vim習慣和環境可能有很大不同。我們可以通過vimrc文件定制的方法來使用戶在打開vim的時候獲得自己熟悉的和適用于自己特殊目的的環境。
?????? 在每個用戶的home目錄下都有一個“.vimrc”文件(注意前面有一個點),我們可以手工創建它。在vim啟動時,會讀入其中的參數配置,這樣我們打開文件時就可以進入自己熟悉的編輯環境和使用個性化的鍵盤配置。
應用實例:使用.vimrc文件定制vim
.vimrc的內容????????????????????????????????????????????????????????
set nu????????????????????????????????????????????????????????????????????
set inc search?????????????????????????????????????????????????????????
set tabstop=4?????????????????????????????????????????????????????????
set mouse=a??????????????????????????????????????????????????????????
set history=100??????????????????????????????????????????????????????
set vb t_vb=????????? ????????????????????????????????????????????????
set ruler?????????????????????????????????????????????????????????????????
set virtualedit=all????????????????????????????????????????????????????
set nocompatible????????????????????????????????????????????????????
set nu
我們已經學習過如何在vim編輯時為文件加上行號以利于定位。其實我們可以讓vim在啟動時就加上行號。
set ic
查找字符時忽略大小寫。可以根據自己的習慣使用此功能。如果在編輯時想開啟大小寫查找,可以輸入“: set?noic”。
set incsearch
查找時,我們輸入第一個字符時,vim光標就會自動定位到下面第一個與所查字符相同的字符上,輸入第二個字符,光標就會定位到下一個與這兩個字符相同的字符位置上,依次類推。比原來的查找更方便。
set tabstop=4
默認情況下,vim中的tab鍵可以一次向后移動8位,我們可以通過這個設置把移動位置調整為4,或者其他用戶習慣的數值。
set mouse=a
在編輯過程中鼠標始終活動。
set history=30
使vim可以記住30條歷史命令。在使用!與shell交互的時候很有用,不過也不宜過多空耗內存。
set vb t_vb=
vim如果操作不被允許,計算機會發出“嗶”的聲音。如果你覺得這個聲音太討厭(本人就是如此J),可以用此選項來定關掉它。
set ruler?????????????????????????????????????????????????????????
讓光標所在位置在屏幕下方顯示。
set virtualedit=all??????????????????????????????
一個文件中可能含有很多空的位置,如tab符之間,這些位置默認是不允許光標停留的。而開啟了這個設置之后,光標就可以停留在文件的任何地方做編輯了。可以根據自己的習慣使用。不過請注意,有的時候這個選項會導致因分不清文件中是tab還是空格而引起的格式錯誤。
set nocompatible????????????????????????????????????????????
使vim與vi的模式不兼容,這樣可以避免vi中的bug在vim中出現。可以根據自己的要求關閉。
4.10? 編輯多個文件
vim允許我們一次打開多個文件進行編輯,并在它們之間進行切換。如:
#vim? /etc/hosts? /etc/service? /usr/local/samba/lib/smb.conf
可以一次編輯三個文件。打開的屏幕會顯示第一個文件,我們可以用底線模式下的“e”來實現三個文件中的切換:
“:e /etc/service”
也可以用Ctrl+Shift+6來回到上一個編輯的文件。注意在文件間切換時,vim會強制你保存或放棄本次修改的內容。
一次編輯多個文件是很實用的功能。我們還可以在vim中用“:e”命令隨時打開新的文件,用“yy”拷貝其中的內容,粘貼到原來的文件中。
技巧
同時編輯多個文件時還可以用更直觀的方法:分割當前屏幕,用不同的屏幕空間顯示不同的文件,使編輯工作更清晰。在底線模式下使用“:sp /etc/service”,即可以此種方式打開文件,并分上下兩欄分別顯示。
4.11 十六進制編輯方式
除了傳統的ASCII碼的編輯方式,Vi中還可以采用十六進制的方式來編輯文件,尤其是在一些特殊目的的編程中會用到。這時可以通過xxd設定命令來完成。在底線模式下輸入:
:%!xxd
然后回車即可。
如圖可見,十六進制模式編輯的時候中間顯示了文件數據的十六進制代碼,而右邊還是原文。
如果要從十六進制返回原來的編輯模式,只需輸入:%!xxd –r就可以完成。
4.12? 文本格式轉換:unix2dos和dos2unix命令
從名稱就可以猜想到,這兩個文本操作命令是在unix與dos文件格式之間進行轉換用的。實際應用中,管理員經常會把Linux平臺上的重要文檔放到自己的Windows工作站上保存和查看,而兩種平臺之間的文本在互相查看的時候可能會因為一些控制符號的存在而使屏幕顯得很亂,非常不方便編輯。這時就需要用到本節介紹的這兩個轉換命令。
在Windows窗口中的Linux文檔
DOS文件中,列的結束符號有兩個控制字符,一個是歸位字符 (carriage return,^M),另一個是換列字符(new line,^J)。但Linux中只使用一個換列字符 \n (功能同^J)。所以當Linux的文本文件放到DOS 上用文字編輯器編輯時,會錯亂成首尾相連的一行。
unix2dos的作用就是把Linux 的行尾符號(^J)轉換成DOS中使用的(^M^J)。命令格式:unix2dos? ? 源文件名
如:
| # unix2dos ?ls.man.txt |
| # unix2dos ?-n? ls.man.txt? ls.man.txt.dos |
轉換出來的內容會更新ls.man.txt文件,在Windows中查看就是正常的了。如果想將保留原文件,將轉換內容新生成一個文件,需要-n選項。
?
而
新生成出來的ls.man.dos.txt就是可以被Windows識別的格式。
dos2unix的作用可以想見是正好相反的,功能是把Windows文檔中的行尾符號轉為^J,以便在Linux中可以使用。命令格式也相同。
| # unix2dos ?-n? ls.man.txt? ls.dos.txt |
總結
以上是生活随笔為你收集整理的linux之文本编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用福禄克CFP单模光纤测试仪像专家一样
- 下一篇: Linux操作系统——vi文本编辑器