vi/vim文本編輯器的使用

Vi/Vim文本編輯器的使用vim


vi/vim編輯器是全部Unix及Linux系統下標準的編輯器。vim是vi的一種升級。bash

vi/vim三種模式

1.通常模式

啓動vim後默認處於正常模式。不論位於什麼模式,按下鍵(有時須要按兩下)都會進入命令模式。app

-快捷鍵編輯器

u  撤銷上一次操做(經常使用)
h   向左
J   向下
K   向上
l   向右

複製代碼
2.編輯模式 (insert mode)

從通常模式按下‘i’便可進入。ui

i : 光標處開始插入
 I : 光標所在行首開始插入
 A : 光標所在行尾開始插入(append)
 o : 光標下插入新行

複製代碼
3.命令行模式 (command-line mode)

從通常模式按下「:」、'?'、'/'便可進入spa

命令模式 切換 編輯模式,直接輸入 :便可, enter 鍵返回命令模式 -options操作系統

:w  保存
:q  退出vim
:wq 保存並退出
:wq!    (在能夠轉換權限的狀況下)強制保存並退出
:q! 直接退出不保存
:w filename 另存爲filename
:n,m w filename 將第n行到第m行另存爲filename
:set nu 顯示行號
:set nonu   不顯示行號
:! command  暫時離開vim,並執行command,執行完後再進入vim
:r filename 將filename文件的數據讀入當前文件
:set all    顯示當前vim的環境配置
複製代碼

vim的恢復機制

vim正在編輯某個文件時都會同時存在.file.swp,此文件用來暫存,幫助恢復文件內容,當vim正常關閉此文件時,.filename.swp文件會消失。 vim2 咱們看到圖中說明了出現此界面的兩個緣由:命令行

(1)多人同時編輯此文件:由於Linux是多用戶的操做系統,所以可能兩我的同時登錄並編輯此文件,若是A進入系統開始編輯1.txt文件,則會出現.1.txt.swp,當A還沒編輯完但B也想進去編輯時,由於此文件的目錄中存在.1.txt.swp,則就會出現上圖的界面; (2)非正常關閉文件; 圖中最後一行說明了咱們此時能夠採起的幾個動做:日誌

(1)o:以只讀方式打開;
(2)R:恢復,即從swp文件中恢復,可是swp文件不會隨着vim關閉而刪除,須要手動刪除;
(3)d:刪除swp文件;
(4)q:退出vim;

複製代碼

vim查找功能和替換

1.查找
  • 在通常模式下,也就是在其餘模式下按鍵,而後按 /要的查找的字符 或者 ?要查找的字符,"/","?"的區別在於二者的區別是前者是從上往下搜索,後者是從下往上搜索。code

  • 若是想要查找的模式串中包含/或者?以及其餘的特殊字符,如^,$等,則須要使用轉義字符’\’,例如: ://home,則表示須要查找’/home’字符串。

-快捷鍵

n:查找下一個
N:查找上一個。
複製代碼
2.替換

:s(substitute)命令用來查找和替換字符串。語法以下:

:{做用範圍}s/{目標}/{替換}/{替換標誌} 例如:%s/class/interface/g會在全局範圍(%)查找class並替換爲interface,全部出現都會被替換(g)

  • 做用範圍 做用範圍分爲當前行、全文、選區等等。

當前行:

:s/class/interface/g
複製代碼

所有:

:%s/class/interface/g
複製代碼

選區,在Visual模式下選擇區域後輸入:,Vim便可自動補全爲 :'<,'>。

:'<,'>s/class/interface/g n-n1行:

:n,n1s/class/interface/g
複製代碼

當前行.與接下來兩行+2:

:.,+2s/class/interface/g
複製代碼
  • 替換標誌 上文中命令結尾的g便是替換標誌之一,表示全局global替換(即替換目標的全部出現)。 還有不少其餘有用的替換標誌:

空替換標誌表示只替換從光標位置開始,目標的第一次出現:

:%s/class/interface
i表示大小寫不敏感查找,I表示大小寫敏感:

:%s/class/interface/i
# 等效於模式中的\c(不敏感)或\C(敏感)
:%s/class\c/interface
c表示須要確認,例如全局查找"class"替換爲"interface"而且須要確認:

:%s/class/interface/gc
回車後Vim會將光標移動到每一次"foo"出現的位置,並提示

replace with bar (y/n/a/q/l/^E/^Y)?
按下y表示替換,n表示不替換,a表示替換全部,q表示退出查找模式, l表示替換當前位置並退出。^E與^Y是光標移動快捷鍵,
複製代碼

*大小寫敏感查找

在查找模式中加入\c表示大小寫不敏感查找,\C表示大小寫敏感查找。例如:

/class\c
將會查找全部的"class","CLASS","Class"等字符串。
複製代碼

vim記錄及默認配置文件

/etc/vimrc文件爲全局vim配置文件。

1.若是咱們用longer帳戶使用vim後,在/home/longer就會出現.viminfo文件,此文件用來做爲vim的日誌,記錄用戶使用vim打開了什麼文件,作了什麼操做; 2.若是longer帳戶想要配置vim的默認環境,則能夠在/home/longer建立.vimrc,而且配置一些特徵,好比顯示行號,語法檢查等; 通常使用以下配置:

set hlsearch
set backspace=2
set autoindent
set nu
set ruler
set showmode
set bg=dark
syntax on

複製代碼

Visual Block功能

Visual Block功能能夠用於塊複製。

(1)CTRL+v:開始複製塊; (3)y:複製塊; (4)p:黏貼塊; (5)d:刪除塊

同時編輯多個文件

多文件編輯的好處是可以將一個文件的某些內容yy後,p到另外一個文件中。 vim file1 file2 便可同時編輯兩個文件,可是屏幕中同時只會出現一個文件內容,須要進行切換。 --options

:n:向下切換;
:N:向上切換;
:files:列出當前編輯的全部文件

複製代碼

多窗口編輯

:sp:打開當前文件;
:sp filename:打開filename文件;
CTRL+w+↓:光標切換到下一個窗口;
CTRL+w+↑:光標切換到上一個窗口;
:q:關閉光標所在的窗口;

複製代碼

####vi/vim操做常見問題

1.如何選擇代碼塊

塊選擇(Visual Block)

Vim的大部分命令都是以行爲單位的,有時候想要刪除、粘貼或複製特定區域,那麼如何搞定一塊範圍呢?

通常模式下,塊選擇的按鍵意義

v 字符選擇,將光標通過的字符選擇
V 行選擇,將光標通過的行選擇
[Ctrl]+v 矩形選擇,能夠用矩形的方式選擇數據
y 將選中地方複製起來
d 將選中地方刪除
複製代碼

2.如何縮進

normal 模式下:
== 行用== (連按=兩次), 或對多行用n==(n是天然數)
>>  當前行增長縮進
<<  當前行減小縮進

insert模式下:
CTRL+SHIFT+T:當前行增長縮進
CTRL+SHIFT+D:當前行減小縮進
複製代碼
相關文章
相關標籤/搜索