Linux入門學習之 vi vim編輯器必知必會

2022-05-05 09:42:09 字數 3993 閱讀 8987

vi 在當前開啟的檔案內容中翻頁:pageup、pagedown

一、我們為什麼要學習vim編輯器?

linux的命令列介面下面有非常多的文字編輯器。比如經常聽說的就有emacs、pico、nano、joe與vim等。vim可以看做是vi的高階版。我們為什麼一定要學習vim呢?有以下幾個原因:

(1)所有的unix like系統都會內建vi文字編輯器,其他的文字編輯器則不一定會存在。

(2)很多軟體的編輯介面都會主動呼叫vi。

(3)vim具有程式編輯的能力,可以主動以字型顏色辨別語法的正確性,方便程式設計。

(4)程式簡單,編輯速度快。

二、下面先介紹一下vi的基本使用方法及其相關命令。

在一般模式中可以進行刪除、複製和貼上的功能,但是無法編輯檔案內容。從一般模式切換到編輯模式可以按下i、i、o、o、a、a、r、r鍵。按下esc鍵可以回到一般模式。在一般模式中輸入:、/、?三個中的任意乙個可以將游標移到最下面的一行。在這個模式中可以提供查詢資料的操作,而讀取、儲存、大量替換字元、離開vii、顯示行號等操作則是在此模式中完成的。需要注意的是,編輯模式與命令列模式之間是不能互相切換的。

下面列出平時用的最多的vi命令:

移動游標的方法:

[ctrl]+[f]:螢幕向下移動一頁,相當於[pagedown]按鍵。

[ctrl]+[b]:螢幕向上移動一頁,相當於[pageup]按鍵。

0或功能鍵[home]:移動到這一行的最前面字元處。

$或功能鍵[end]:移動到這一行的最後面字元處。

g:移動到這個檔案的最後一行。

gg:移動到這個檔案的第一行,相當於1g.

n[enter]:n為數字,游標向下移動n行。

查詢和替換:

/word:向下尋找乙個名稱為word的字串。

?word:向上尋找乙個名稱為word的字串。

:n1,n2s/word1/word2/g:在第n1行和n2行之間尋找word1這個字串,並且將其替換為word2.

:1,$s/word1/word2/g:從第一行到最後一行尋找word1這個字串,並且將其替換為word2.

:1,$s/word1/word2/gc:從第一行到最後一行尋找word1這個字串,並且將其替換為word2.且在替換前顯示提示字元給使用者確認是否需要替換。

刪除、複製和貼上:

x,x:在一行字中,x為向後刪除乙個字元(相當於[del]鍵),x為向前刪除乙個字元(相當於[backspace])。

dd:刪除游標所在的一整行。

ndd:刪除游標所在的向下n行。

yy:複製游標所在的一行。

nyy:複製游標所在的向下n行。

u:復原前乙個操作。

.:小數點,重複前乙個操作。

i,i:進入插入模式,i為從目前游標所在處插入。i為在目前所在行的第乙個非空格字元處開始插入。

r,r:進入替換模式。r只替換游標所在那個字元一次。r會一直替換游標所在字元,直到按下esc鍵。

一般模式切換到命令列:

:q:離開vi.後面加!為強制離開。

:wq:儲存後離開。:wq!為強制儲存後離開。

目前主要的編輯器都有恢復功能,vim也不例外。vim是通過「儲存」檔案來挽回資料的。

每當我們在用vim編輯時,vim都會自動在被編輯的檔案的目錄下面再新建乙個名為filename.swap的檔案。這就是乙個暫存檔案,我們對檔案filename所做的操作都會被記錄到這個檔案當中。如果系統意外崩潰,導致檔案沒有正常儲存,那麼這個暫存檔案就會發揮作用。下面用乙個例子來說明(note:我用的是ubuntu)。

開啟終端,輸入命令,將etc目錄下面的manpath.config複製到tmp目錄下面,並且更改當前工作目錄為tmp:

cp /etc/manpath.config /tmp

cd /tmp

我們在vim的一般模式下按下ctrl+z組合鍵,vim就會被丟到後台執行。回到命令提示符環境後,我們模擬將vim的工作不正常中斷。

kill -9 %1;強制殺死制定的程序。

這時,有六個按鈕可以使用:

o(pen for read-only):開啟成唯讀檔案。

e(dit):用正常方式開啟要編輯的檔案,並不會載入暫存檔案的內容。這很容易出現兩個使用者相互改變對方的檔案的問題。

r(ecover):載入暫存檔案的內容。

d(elete):如果你確定這個暫存檔案是沒有用的,則可以刪除。

q(uit):不進行任何操作,回到命令列。

需要注意的是:這個暫存檔案不會應為你結束vim後自動刪除,必須要手動刪除。否則每次開啟對應的檔案時都會出現這樣的提示。

三、vim的功能

塊選擇:

這個功能可以讓我們複製乙個矩形區域的內容,十分方便。

v:字元選擇,會將游標經過的地方反白選擇;

v:行選擇;

ctrl+v:塊選擇;

y:複製反白的地方;

d:刪除反白的地方。

示例如下:

需要注意的是,貼上時候也是貼上在乙個塊的範圍內,而不是以行為單位來處理的。

多檔案編輯

我們在兩個或多個檔案之間複製貼上內容時,這個功能會讓我們方便很多。

使用命令vim name1 name2 name3…(各個檔名之間用空格隔開)可以同時開啟多個檔案。

:n:編輯下乙個檔案;

:n:編輯上乙個檔案;

:files:列出目前vim開啟的所有檔案。

多視窗功能

可以在乙個視窗中開啟多個檔案。

輸入命令:sp便可以實現這個功能。如果想要在新視窗啟動另外乙個檔案,則加入檔名。如果省略檔名,則開啟的是同乙個檔案。

用乙個例子來說明。

vim manpath.config開啟乙個檔案。在一般模式下輸入:sp。發現開啟的是同乙個檔案。如果再輸入:sp /etc/hosts。則變成:

其他的按鍵功能:

ctrl+w+j:先按下ctrl不放,再按下w後放開所有的按鍵,再按下j(或向下箭頭鍵),則游標可以移到下方的視窗;

ctrl+w+k:同上,不過光表移到上面的視窗;

ctrl+w+q:離開。

vim環境設定

需要注意的是,vim會將i我們的以前的行為都記錄下來,以方便我們操作。它儲存在檔案:~/.viminfo中。

vim常用的環境設定引數命令如下:

:set nu 設定行號

:set nonu 取消行號

:set hlsearch 設定高亮度查詢

:set nohlsearch 取消高亮度查詢

:set backup 自動備份檔案

:set ruler 開啟右下角狀態列說明

:set showmode 顯示左下角的insert之類的狀態列

:set backspace= 設定退格鍵功能。為2時可以刪任意字元。為0或1時僅可以刪除剛才輸入的字元。

:set all 顯示目前所有的環境引數值

:set 顯示與系統預設值不同的引數值

:syntax on/off 是否開啟依據相關程式語法顯示不同的顏色

:set bg=dark/light 是否顯示不同的顏色色調

但是我們沒有必要每次使用vim都要重新設定一次各個引數值。我們可以通過配置檔案來直接規定我們習慣的vim操作環境。整體vim的設定值一般是放在/etc/vimrc中的。我們一般不要修改這個檔案。我們可以通過修改~/.vimrc這個檔案,如果不存在,可以手動建立。然後將我們所希望的設定值寫入。例如,我們可以這樣寫:

vim ~/.vimrc

set hlsearch(注意:set前面也可以加冒號,結果一樣)

set backspace=2

set ruler

set showmode

set nu

syntax on

建立並儲存這個檔案之後,當下次重新以vim編輯某個檔案時,該檔案的預設環境就是這麼設定的。

Linux學習之VI VIM編輯器

個人覺得vim編輯器主要就是掌握它的三種模式,不然根本沒法用.以 vi 開啟乙個檔案就直接進入一般模式了 這是預設的模式 在這個模式中,你可以使用 上下左右 按鍵來移動游標,你可以使用 刪除字元 或 刪除整行 來處理檔案內容,也可以使用 複製 貼上 來處理你的檔案資料。常用語法 yy 功能描述 複製...

linux之vi vim的使用

vi vim是在linux中常用的編輯工具,也是每個程式設計師必備的技能之一。貼上與複製 快捷鍵操作效果 yy複製當前行 nyyn為數字,複製游標向下n行 小寫p將複製的資料在游標下一行貼上 大寫p將複製的資料在游標上一行貼上 插入 快捷鍵操作效果 i當前字元左邊插入 a當前字元右邊插入 i當前字元...

Linux學習筆記(六)vi vim

vi文書編輯器,使用較多的是vim編輯器 vim編輯器具有程式編輯能力,可以主動的以字型顏色辨別語法正確性,方便程式設計。什麼是vim 從vi發展而來,補充 編輯和錯誤跳轉等方便程式設計的功能特別豐富。簡單來講,vim是vi的公升級,更適合開發者,vim是乙個程式開發工具而不是文字處理軟體。vi v...