vim編輯器 vi(visual interface) vim(vi improved) gvim(graph vim) vim vim打開文件 vim 的三種主要模式: vim的模式轉換 擴展模式進行的操作 命令模式進行的命令 編輯二進位文件 定製vim 的工作特性 vim高級 幫助 ...
vim編輯器
vi(visual interface)
vim(vi improved)
gvim(graph vim)
vim
vim - Vi IMproved, a programmers text editor
vim [arguments] [file ..] 編輯指定文件(s)
vim [arguments] - 從標準輸入讀取text內容
vim [arguments] -t tag 編輯tag已被定義的文件
vim [arguments] -q [errorfile] edit file with first error
Arguments:
-- 僅跟隨此後的文件名
-v Vi 模式 (like "vi")
-e Ex 模式 (like "ex")
-E 增強版的 Ex 模式
-s 沉默模式 (only for "ex")
-d 微分模式 (like "vimdiff")
-y 簡單模式 (like "evim", modeless)
-R 只讀模式 (like "view")
-Z 受限模式 (like "rvim")
-m 不被允許修正
-M 在text中的修正不被允許
-b 二進位模式
-l 模糊模式
-C 相容 Vi: 'compatible'
-N 不充分相容 Vi : 'nocompatible'
-V[N][fname] 詳情 [level N] [log messages to fname]
-D 調試模式
-n 不使用交換分區文件,僅使用記憶體
-r 列出交換分區文件並退出
-r (with file name) 恢復毀壞的會話
-L 同 -r
-A 以阿拉伯語模式開始
-H 以希伯來語模式開始
-F 以波斯語模式開始
-T <terminal> 設置終端類型為 <terminal>
-u <vimrc> 使用<vimrc> 代替任何的 .vimrc
--noplugin 不載入插件腳本
-p[N] 打開N個標簽頁(default: one for each file)
-o[N] 打開N個視窗(default: one for each file)
-O[N] 和-o 類似,但垂直劃分
+ 以文件最後開始
+<lnum> 以指定行開始
--cmd <command> 在載入任何vimrc文件前,執行命令
-c <command> 在載入第一個文件後執行命令
-S <session> 載入第一個文件後的源文件會話
-s <scriptin> 從文件<scriptin>中讀取正常模式命令
-w <scriptout> 附加所有類型命令到文件 <scriptout>
-W <scriptout> 寫所有類型命令到文件<scriptout>
-x 編輯加密的文件
--startuptime <file> 寫開始時間信息到文件
-i <viminfo> 使用 <viminfo> 取代.viminfo
vim打開文件
+#: 打開文件後 ,讓游標處於第# 行的 行首,+ 預設行尾
+/ PATTERN : 打開文件後,直接讓游標處於第一個被PATTERN 匹配到的行的行首
–b file 二進位方式打開文件
–d file1 file2… 比較多個文件
-m file 只讀打開文件
ex file 或 vim –e 直接進入ex 模式
如果該文件存在,文件被打開並顯示內容
如果該文件不存在,當編輯後第一次存檔時創建它
vim 的三種主要模式:
命令(Normal) 模式: 預設模式,移動游標,剪切/ 粘貼文本
插入(Insert): 編輯模式,修改文本
擴展命令(extended command ) 模式: 保存,退出等
Esc鍵退出當前模式
Esc鍵總是返回到命令模式
vim的模式轉換
圖中:
INSERT代表進行插入模式
ALL代表進入命令模式
VISUAL代表進行可視化模式
:代表進行擴展命令模式
進入命令模式(ALL)的方法
vim(vi)進入文本後就進入了命令模式
按ESC鍵退出其他模式同樣就進入了命令模式
進入插入模式的方法
i: insert, 在游標所在處輸入
I: 在當前游標所在行的行首 輸入
a: append, 在游標所在處後面輸入
A : 在當前游標所在行的行尾 輸入
o: 在當前游標所在行的下方打開一個新行
O : 在當前游標所在行的上方打開一個新行
進入可視化模式(VISUAL)的方法
按v鍵,進入面向字元的模式,提示為VISUAL,可進行字元級別的選擇
按V鍵,進入面向行的模式,提示為VISUAL LINE,可進行到行級別的選擇
按Ctrl + v|V,進入面向塊的模式,提示為VISUAL BLOCK,可進行塊級別的選擇
進入可視化模式後,突出顯示的文字可被刪除d,複製y,過濾,搜索,替換等
擴展模式進行的操作
按“: ”進入擴展模式
創建一個命令提示符: ,處於底部的屏幕左側
命令:
w 寫(存)磁碟文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存檔退出,即使更改都將丟失
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
!command 執行命令
r!command 讀入 命令的輸出
地址定界:
:start_pos,end_pos
# 具體第#行,例如2表示第2行
#,# 從左側#表示起始行,到右側#表示結尾行
#,+# 從左側#表示的起始行,加上右側#表示的行數
2,+3 表示2到5行行
. 當前行
$ 最後一行
.,$-1 當前行到倒數第二行
% 全文, 相當於1,$
/pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2 匹配到的行結束
#,/pat/
/pat/,$
使用方式:地址定界後再加個編輯命令
d 刪除
y 複製
w file: 將範圍內的行另存至指定文件中
r file: 在指定位置插入指定文件中的所有內容
查找字元串:
/PATTERN : 從當前游標所在處向文件尾部查找
?PATTERN : 從當前游標所在處向文件首部查找
n : 與命令同方向
N : 與命令反方向
查找並替換:
滿足正則表達式
s: 在擴展模式下完成查找替換操作
格式:<範圍指定>s/ 要查找的內容/ 替換為的內容/ 修飾符
<範圍指定>:指定從那個到那個進行查找替換。
N1,N2:表示從第N1行到N2行。
%:表示全部查找替換
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, ...等後向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g: 對全局查找,預設情況下,每一行只替換匹配到的第一個
c: 每次替換前詢問
分隔符“/”可以替換為其他字元,如“@”,“#”。
<範圍指定>s@要查找的內容@替換為的內容@修飾符
<範圍指定>s#要查找的內容#替換為的內容#修飾符
示例:
s@/etc@/var@g
s#/boot#/#i
%s#/boot#/#i
命令模式進行的命令
ZZ: 保存退出
ZQ: 不保存退出
字元間跳轉:
h: 左
l: 右
j: 下
k: 上
#COMMAND : 跳轉由#指定的個數的字元
單詞間跳轉:
w : 下一個單詞的詞首
e : 當前或下一單詞的詞尾
b : 當前或前一個單詞的詞首
#COMMAND : 由# 指定次跳轉的單詞數
當前頁跳轉:
H: 頁首
M: 頁中間行
L: 頁底
行首行尾跳轉:
^: 跳轉至行首的第一個非空白字元
0: 跳轉至行首
$: 跳轉至行尾
行間移動:
#G: 跳轉至由#指定行
G : 最後一行
1G, gg: 第一行
句間移動:
) : 下一句
( : 上一句
段落間移動:
}: 下一段
{ : 上一段
翻屏操作
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u : 向文件首部翻半屏
字元編輯:
x: 刪除游標處的字元
#x: 刪除游標處起始的#個字元
xp: 交換游標所在處的字元及其後面字元的位置
~: 轉換大小寫
J: 刪除當前行後的換行符
替換命令(r, replace)
r: 替換游標所在處的字元
R: 切換成REPLACE 模式
刪除命令:
d: 刪除命令,可結合游標跳轉字元,實現範圍刪除
d$: 刪除到行尾
d^: 刪除到非空行首
d0: 刪除到行首
dd: 刪除游標所在的行
#dd: 多行刪除
D: 從當前游標位置一直刪除到行尾,留空行==d$
#COMMAND #次操作上述操作
複製命令(y, yank): :
y: 複製
y$: 複製當前位置到行尾
y0: 複製當前位置到行頭
y^: 複製當前位置到行首
yy : 複製行
#yy: 複製多行
Y: 複製整行
#COMMAND #次上述操作
粘貼命令(p, paste): :
p: 緩衝區存的如果為整行,則粘貼當前游標所在行的下方;否則,則粘貼至當前游標所在處的後面
改變命令(c, change)
c: 修改後切換成插入模式,命令模式 --> 插入模式
c$
c^
c0
cc : 刪除當前行並輸入新內容
#cc:
C : 刪除當前游標到行尾,並切換成插入模式
#COMMAND #次上述操作
技巧操作
<start position><command><end position>
Command:
y 複製、d 刪除、gU 變大寫、gu 變小寫
ye 從當前位置拷貝到本單詞的最後一個字元
示例
0y$ 命令意味著:
0 → 先到行頭
y → 從這裡開始拷貝
$ → 拷貝到本行最後一個字元
撤消之前的更改
u 撤銷最近的更改
#u 撤銷之前多次更改
U 撤消游標落在這行後所有此行的更改
Ctrl + r 重做最後的“撤消”更改
. 重覆前一個操作
n. 重覆前一個操作n次
編輯二進位文件
以二進位方式打開文件
vim –b binaryfile
擴展命令模式下,利用xxd 命令轉換為可讀的十六進位
:%!xxd
擴展命令模式下,利用xxd 命令轉換回二進位
:%!xxd –r
保存退出:wq
定製vim 的工作特性
配置文件:
進行永久有效的修改
全局:/etc/vimrc
個人:~/.vimrc
僅對當前vim 進程有效設置
“:”,進入擴展模式進行設置
(1) 行號設置
顯示:set number, 簡寫為set nu
取消顯示:set nonumber, 簡寫為set nonu
(2) 括弧成對匹配設置
匹配:set showmatch, 簡寫為set sm
取消:set nosm
(3) 自動縮進設置
啟用:set ai
禁用:set noai
(4) 高亮搜索設置
啟用:set hlsearch
禁用:set nohlsearch
(5) 語法高亮設置
啟用:syntax on
禁用:syntax off
(6) 忽略字元的大小寫的設置
啟用:set ic
不忽略:set noic
(7) 文件格式設置
啟用windows 格式:set fileformat=dos
啟用unix 格式:set fileformat=unix
(8) 設置文本寬度
:set textwidth=65 (vim only)
:set wrapmargin=15
:set
:set all
vim高級
多文件模式
vim FILE1 FILE2 FILE3 ...
文件選擇:
:next 下一個
:prev 前一個
:first 第一個
:last 最後一個
:wall 保存所有
:qall 退出所有
:wqall 保存退出所有
多個“視窗”模式
多文件視窗分割:
vim -o|-O FILE1 FILE2 ...
-o 水平分割
-O 垂直分割
在視窗間切換 Ctrl+w(且按上下左右鍵)
單文件視窗分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v vertical, 垂直分割
ctrl+w,q 取消相鄰視窗
ctrl+w,o 取消全部視窗
:wqall 退出
vim寄存器
vim(vi)有26 個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共用
寄存器名稱a ,b,…,z
格式:"字元
3"tyy 表示覆制3 行到t 寄存器中
"tp 表示將t寄存器內容粘貼
未指定時將使用無命名寄存器
有10 個數字寄存器,用0 ,1 ,… ,9 表示,0存放最近複製內容
1 存放最近刪除內容,當新的文本變更和刪除時,1 轉存到2,2 轉存到3,以此類推,數字寄存器不能在不同會話間共用
幫助
vim(vi)內置幫助
:help
:help topic
按q退出幫助
vimtutor命令可以進入練習模式