vim---Vi IMproved by Bram Moonlenaar,是模式化的文本編輯器。有三種模式,分别是:
編輯模式,也叫指令模式;輸入模式,有時也叫插入模式;末行模式。
三種模式之間的轉換:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcugzN0QTNwETMy8CXyAjMxAjMvwFduVWboNWY0RXYvwVbvNmLvR3YxUjL4M3Lc9CX6MHc0RHaiojIsJye.png)
注意:末行模式不能與輸入模式通信。
一、打開vim編輯器
#vim [options] FILE 1,1
i:insert,在目前光标所在處插入,插入在光标前。
a:append,在目前光标所在處插入,插入在光标後。
I:在目前光标所在行的行首,插入操作。
A:在目前光标所在行的行尾,插入操作。
o:在光标所在行的下方打開一個新行,并轉入輸入操作。
O:在光标所在行的上方打開一個新行,并轉入輸入操作。
退出:
儲存退出,:wq;:wqall(多個檔案);zz
不儲存退出::q(無編輯退出); :q!(已編輯退出); :qall!(退出所有檔案)
以下均在編輯模式進行
二、在vim中如何使光标移動
h, ←:向左移動
j, ↓:向下移動
k, ↑:向上移動
l, →:向右移動
三、如何在單詞間跳轉
w:跳至下一個單詞詞首
e:先跳至本單詞詞尾,再跳至下一個單詞的詞尾。
b:先跳至本單詞詞首,再跳至上一個單詞的詞首。
(: 在句子間跳轉,向前一句。
):在句子間跳轉,向後一句。
{:跳過整個段落,向上一段。
}:跳過整個段落,向下一段。
^:可快速跳至目前行的行首(第一個非空白字元)。
0:可快速跳至目前行的絕對行首。
$:可快速跳至目前行的絕對行尾。
行間跳轉:
G: #G 跳至第#行
G 跳至檔案最後一行
1G 跳至檔案首部
四、如何翻屏
Ctrl+f: 向尾部翻一屏。
Ctrl+b: 向首部翻一屏。
Ctrl+d: 向尾部翻半屏。
Ctrl+u: 向首部翻半屏。
常用指令:
c: 修改,可在轉換至輸入模式之前删除一些東西。c要與跳轉字元一塊用,限定範圍。cc:删除光标所在行,并進入輸入模式。ncc: 删除n行。
d: 與c的作用一樣,可删除東西,但不會進入輸入模式。
删除字元 : x 删除目前光标所在處的單個字元;
nx 删除光标及其後n 個字元;
X 向光标前删除單個字元
替換: r ,replace 隻能操一個字元,并且不會轉換模式。如 5rA,表示把光标及其 後5個字元換成A。
R,進入替換模式
撤銷:u(undo),撤銷最近一次的編輯操作。
uu ,撤銷最近2次的編輯操作。
nu,撤銷最近n次的編輯操作。
Ctrl+r: 撤銷剛才的撤銷操作。
重做: . ,(redo) 重複執行上一條指令或操作 。
複制: y(yunk),
y$:複制從光标到行尾的内容。
yy:複制目前光标所在行的整行内容。
nyy:複制目前光标所在行的其後n行的内容。
粘貼: p,若是複制的整行,則在目前光标所在行的下方粘貼;若不是整行,則在光 标後粘貼。
P,若是複制的整行,則在目前光标所在行的上方粘貼;若不是整行,則在光 标前粘貼。
移動:先用d删除,再用p粘貼。
查找指令:
v:按字元選取
V:按行選取
/keyword(關鍵字):
?keyword(關鍵字):
n/N:向前或向後查找。
查找後并替換:
s: 在末行模式下使用
ADDR1(始),ADDR2(末) s/from(查找什麼)/to(替換成什麼)/flags(動作修正符)
flags: i 忽略大小寫
g 全局都替換
m,n : 從第m行到第n行。
1,$ :第一行到最後一行。
. ,+8:從目前行往後8行(共九行)
1,$-1:第一行到倒數第二行。
% :全文搜尋,第一到最後一行。
查找内容可使用正規表達式,替換的内容可使用``。
測試一下:
(1)把inittab中以#開頭,其後有空白,空白後還有内容的行,将#與空白去掉,若#後全是空白,則不動。
①:%s@^#@@ 把#删除
②:%s@^#[[:space:]]*@@g 把#與空白去掉
③:%s@^#[[:space:]]*\([^[:space:]]\)@\1@g 保留#後的空白
(2)在全文找到以e結尾的單詞,并把e換成E
: %s@\<\([[:alpha:]]\{1,\}\)e@\1E@g
五、若vim同時打開多個檔案:
:next 切換至下一個文檔
:first 切換至第一個文檔
:last 切換至最後一個文檔
:prev 切換至上一個文檔
分割視窗:
水準分割 Ctrl+w,後按s
Ctrl+w,t:切換至最上一個視窗(多個視窗時)
Ctrl+w,b:切換至最下一個視窗(多個視窗時)
Ctrl+w,j:切換至下一個視窗
Ctrl+w,k:切換至上一個視窗
垂直分割 Ctrl+w,後按v
Ctrl+w,l:切換至最左一個視窗(多個視窗時)
Ctrl+w,r:切換至最右一個視窗(多個視窗時)
Ctrl+w,h:切換至左邊視窗
Ctrl+w,l:切換至右邊視窗
顯示分割多個檔案:
-o: 水準分割 如 vim -o
-O: 垂直分割 如 vim -O
六、設定vim的工作屬性
vim的配置檔案是 /etc/vimrc 和 ~/.vimrc。若想設定在全局生效,則在/etc/vimrc下配置;若想設定在本使用者下生效,則在~/.vimrc下設定。
顯示行号:set nu
取消行号: nonu (目前視窗編輯時)
自動縮進: set ai
取消縮進: set noai
文法高亮: syntax on|off
搜尋高亮: set hlsearch 或 no hlsearch
大緻上vim的簡單指令已經介紹完了,這是彌補前面用到的而我沒有說明過的vim編輯器的指令及用法,在這裡又寫一遍,記憶更深刻一些。
明天就要上課了,又要開始緊張了,繃緊了弦子,努力學習!!!
每天進步一點點,每一天都有不一樣的收獲!
參考别人的部落格及本人的使用經驗,添加一點新内容:
J 将下一行和目前行連接配接為一行
cc 删除目前行并進入編輯模式
cw 删除目前字,并進入編輯模式
c$ 擦除從目前位置至行末的内容,并進入編輯模式
s 删除目前字元并進入編輯模式
S 删除光标所在行并進入編輯模式
xp 交換目前字元和下一個字元
u 撤銷
ctrl+r 重做
. 重複上一個編輯指令
~ 切換大小寫,目前字元
g~iw 切換目前字的大小寫
gUiw 将目前字變成大寫
guiw 将目前字變成小寫
>> 将目前行右移一個機關
<< 将目前行左移一個機關(一個tab符)
== 自動縮進目前行
% 跳到與目前括号比對的括号處,如目前在{,則跳轉到與之比對的}處
w 跳到下一個字首,按标點或單詞分割
yw 複制目前光标所在字首的單詞
W 跳到下一個字首,長跳,如end-of-line被認為是一個字
e 跳到下一個字尾
E 跳到下一個字尾,長跳
b 跳到上一個字
B 跳到上一個字,長跳
0 跳至行首,不管有無縮進,就是跳到第0個字元
^ 跳至行首的第一個字元
$ 跳至行尾
gg 跳至檔案的第一行
gd 跳至目前光标所在的變量的聲明處
[N]G 跳到第N行,如0G,就等價于gg,100G就是第100行
fx 在目前行中找x字元,找到了就跳轉至
; 重複上一個f指令,而不用重複的輸入fx
tx 與fx類似,但是隻是跳轉到x的前一個字元處
Fx 跟fx的方向相反
),( 跳轉到上/下一個語句
* 查找光标所在處的單詞,向下查找
# 查找光标所在處的單詞,向上查找
`. 跳轉至上次編輯位置
可視模式
标記文本
v 進入可視模式,單字元模式
V 進入可視模式,行模式
ctrl+v 進入可視模式,列模式,類似于UE的列模式
o 跳轉光标到選中塊的另一個端點
U 将選中塊中的内容轉成大寫
O 跳轉光标到塊的另一個端點
aw 選中一個字
ab 選中括号中的所有内容,包括括号本身
aB 選中{}括号中的所有内容
ib 選中括号中的内容,不含括号
iB 選中{}中的内容,不含{}
對标記進行動作
> 塊右移
< 塊左移
y 複制塊
d 删除塊
~ 切換塊中内容的大小寫