新手指南:Linux上vi(vim)編輯器使用教程

xusir發表於2013-08-08

vi(vim)是上Linux非常常用的編輯器,很多Linux發行版都預設安裝了vi(vim)。vi(vim)命令繁多但是如果使用靈活之後將會大大提高效率。vi是“visual interface”的縮寫,vim是vi IMproved(增強版的vi)。在一般的系統管理維護中vi就夠用,如果想使用程式碼加亮的話可以使用vim。下面vps偵探整理一下vi的使用教程:包含vi的基本介紹、使用模式、檔案的開啟關閉儲存、插入文字或新建行、移動游標、刪除、恢復字元或行、搜尋等等,算是一篇比較適合新手學習vi的教程。

vi有3個模式:插入模式、命令模式、低行模式。

●插入模式:在此模式下可以輸入字元,按ESC將回到命令模式。

●命令模式:可以移動游標、刪除字元等。

●低行模式:可以儲存檔案、退出vi、設定vi、查詢等功能(低行模式也可以看作是命令模式裡的)。

 

 

1、VI或VIM的配置檔案的路徑

  發現/usr/share/vim/vimrc和/etc/vim/vimrc指向是同一個檔案,即vimrc,為vi和vim的配置檔案,修改這個檔案即可。這個路徑在不同的LINUX版本中可能會不同。

  2、配置顏色

  配置VI和VIM的顏色顯示,使它能夠高亮度顯示一些特別的單詞,這對編寫程式很有用。後來開啟檔案發現裡面其實已經有一行了,只是用引號註釋掉了,只需將syntax on 所在行前面的引號去掉即可。或者另外獨立新增一行:syntax on 也行,另外編輯/etc/profile 增加一行alias vi="vim"就行了。

  3、設定滑鼠

  使用VI編輯文字時,如果想修檔案中改離游標較遠的位置,這時候想用滑鼠定位,可預設情況下,滑鼠是不可用的。如果你想使用滑鼠,只需另起一行,寫上:set mouse=a 即可

  4、設定自動縮排

  預設情況下,VI和VIM都沒有縮排的,每換一行,游標均定位在頂格,如果你想自動對齊,請將 set autoindent所在行前面的引號去掉,或者另外新增一行:set autoindent也可。這與配置顏色類似。這樣的設定的結果是按回車後新行與上一行自動對齊。

  5、設定tab的縮排量

  如果用python編寫程式,那麼行縮排量是一個極其重要的概念,同一個塊的縮排量必須相同。你可能喜歡在行前加空格來表示縮排,但每次必須敲多次空格鍵,如果你喜歡用按TAB鍵來表示縮排,你可能覺得寫的文字或程式不太好看,因為預設情況下,VI和VIM的TAB縮排量比較大(至少六,七個字元)。設定TAB鍵縮排量的方法:set shiftwidth=3 你也可以選一 個你自己喜歡的縮排量,比如2,或4。

  其他方便的技巧

  1、vi的基本概念

  基本上vi可以分為三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下:

  1) 命令列模式command mode)

  控制螢幕游標的移動,字元、字或行的刪除,移動複製某區段及進入Insert mode下,或者到 last line mode。

  2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令列模式。

  3) 底行模式(last line mode)

  將檔案儲存或退出vi,也可以設定編輯環境,如尋找字串、列出行號……等。

  不過一般我們在使用時把vi簡化成兩個模式,就是將底行模式(last line mode)也算入命令列模式command mode)。

  2、vi的基本操作

  a) 進入vi

  在系統提示符號輸入vi及檔名稱後,就進入vi全螢幕編輯畫面:

  $ vi myfile

  不過有一點要特別注意,就是您進入vi之後,是處於「命令列模式(command mode)」,您要切換到「插入模式(Insert mode)」才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動游標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi後,先不要亂動,轉換到「插入模式(Insert mode)」再說吧!

  b) 切換至插入模式(Insert mode)編輯檔案

  在「命令列模式(command mode)」下按一下字母「i」就可以進入「插入模式(Insert mode)」,這時候你就可以開始輸入文字了。

  c) Insert 的切換

  您目前處於「插入模式(Insert mode)」,您就只能一直輸入文字,如果您發現輸錯了字!想用游標鍵往回移動,將該字刪除,就要先按一下「ESC」鍵轉到「命令列模式(command mode)」再刪除文字。

  d) 退出vi及儲存檔案

  在「命令列模式(command mode)」下,按一下「:」冒號鍵進入「Last line mode」,例如:

  : w filename (輸入 「w filename」將文章以指定的檔名filename儲存)

  : wq (輸入「wq」,存檔並退出vi)

  : q! (輸入q!, 不存檔強制退出vi)

  3、命令列模式(command mode)功能鍵

  1). 插入模式

  按「i」切換進入插入模式「insert mode」,按“i”進入插入模式後是從游標當前位置開始輸入檔案;

  按「a」進入插入模式後,是從目前游標所在位置的下一個位置開始輸入文字;

  按「o」進入插入模式後,是插入新的一行,從行首開始輸入文字。

  2). 從插入模式切換為命令列模式

  按「ESC」鍵。

一、開啟檔案、儲存、關閉檔案(vi命令模式下使用)

vi filename //開啟filename檔案

:w //儲存檔案

:w vpser.net //儲存至vpser.net檔案

:q //退出編輯器,如果檔案已修改請使用下面的命令

:q! //退出編輯器,且不儲存

:wq //退出編輯器,且儲存檔案

二、插入文字或行(vi命令模式下使用,執行下面命令後將進入插入模式,按ESC鍵可退出插入模式)

a //在當前游標位置的右邊新增文字

i //在當前游標位置的左邊新增文字

A //在當前行的末尾位置新增文字

I //在當前行的開始處新增文字(非空字元的行首)

O //在當前行的上面新建一行

o //在當前行的下面新建一行

R //替換(覆蓋)當前游標位置及後面的若干文字

J //合併游標所在行及下一行為一行(依然在命令模式)

三、移動游標(vi命令模式下使用)

1、使用上下左右方向鍵

2、命令模式下:h 向左、j 向下 、k 向上、l 向右。

空格鍵 向右、Backspace 向左、Enter 移動到下一行首、- 移動到上一行首。

四、刪除、恢復字元或行(vi命令模式下使用)

x //刪除當前字元

nx //刪除從游標開始的n個字元

dd //刪除當前行

ndd //向下刪除當前行在內的n行

u //撤銷上一步操作

U //撤銷對當前行的所有操作

五、搜尋(vi命令模式下使用)

/vpser //向游標下搜尋vpser字串

?vpser //向游標上搜尋vpser字串

n //向下搜尋前一個搜素動作

N //向上搜尋前一個搜尋動作

六、跳至指定行(vi命令模式下使用)

n+ //向下跳n行

n- //向上跳n行

nG //跳到行號為n的行

G //跳至檔案的底部

七、設定行號(vi命令模式下使用)

:set nu //顯示行號

:set nonu //取消顯示行號

八、複製、貼上(vi命令模式下使用)

yy //將當前行復制到快取區,也可以用 "ayy 複製,"a 為緩衝區,a也可以替換為a到z的任意字母,可以完成多個複製任務。

nyy //將當前行向下n行復制到緩衝區,也可以用 "anyy 複製,"a 為緩衝區,a也可以替換為a到z的任意字母,可以完成多個複製任務。

yw //複製從游標開始到詞尾的字元。

nyw //複製從游標開始的n個單詞。

y^ //複製從游標到行首的內容。 VPS偵探

y$ //複製從游標到行尾的內容。

p //貼上剪下板裡的內容在游標後,如果使用了前面的自定義緩衝區,建議使用"ap 進行貼上。

P //貼上剪下板裡的內容在游標前,如果使用了前面的自定義緩衝區,建議使用"aP 進行貼上。

九、替換(vi命令模式下使用)

:s/old/new //用new替換行中首次出現的old

:s/old/new/g //用new替換行中所有的old

:n,m s/old/new/g //用new替換從n到m行裡所有的old

:%s/old/new/g //用new替換當前檔案裡所有的old

十、編輯其他檔案

:e otherfilename //編輯檔名為otherfilename的檔案。

十一、修改檔案格式

:set fileformat=unix //將檔案修改為unix格式,如win下面的文字檔案在linux下會出現^M。

總結:vi(vim)教程雖然有比較多的命令,但是隻要勤加練習,相信你會很快的熟練掌握,同時也會給你的工作或學習帶來更高的效率。當如果不知道自己處在什麼模式時可以按2次Esc鍵即可回到命令模式,會有最後提醒一點:注意大小寫!!!

相關文章