+# 打開文件後,讓光標處於第#行的行首,+默認行尾 +/PATTERN 讓光標處於第一個被PATTERN匹配到的行行首 -b file 二進制方式打開文件 -d file1 file2… 比較多個文件,至關於 vimdiff -m file 只讀打開文件 -e file 直接進入ex模式,至關於執行ex file -y file Easy mode (like "evim", modeless),直接能夠操做文件,ctrl+o:wq|q! 保存和不 保存退出
i insert, 在光標所在處輸入 a append, 在光標所在處後面輸入 I 在當前光標所在行的行首輸入 A 在當前光標所在行的行尾輸入 o 在當前光標所在行的下方打開一個新行 O 在當前光標所在行的上方打開一個新行
插入模式 --- ESC-----> 命令模式正則表達式
命令模式 ---- : ----> 擴展命令模式vim
擴展命令模式 ----ESC,enter----> 命令模式windows
w 寫(存)磁盤文件 wq 寫入並退出 x 寫入並退出 X 加密 q 退出 q! 不存盤退出,即便更改都將丟失 r filename 讀文件內容到當前文件中 w filename 將當前文件內容寫入另外一個文件 !command 執行命令 r!command 讀入命令的輸出
:start_pos,end_pos CMD
# #具體第#行,例如2表示第2行 #,# #從左側#表示起始行,到右側#表示結尾行 #,+# #從左側#表示的起始行,加上右側#表示的行數,範例:2,+3 表示2到5行 . #當前行 $ #最後一行 .,$-1 #當前行到倒數第二行 % #全文, 至關於1,$ /pattern/ #從當前行向下查找,直到匹配pattern的第一行,即:正則表達式 /pat1/,/pat2/ #從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束 #,/pat/ #從指定行開始,一直找到第一個匹配patttern的行結束 /pat/,$ #向下找到第一個匹配patttern的行到整個文件的結尾的全部行
d #刪除 y #複製 w file #將範圍內的行另存至指定文件中 r file #在指定位置插入指定文件中的全部內容
s/要查找的內容/替換爲的內容/修飾符 要查找的內容:可以使用基末正則表達式模式 替換爲的內容:不能使用模式,但可使用\1, \2, ...等後向引用符號;還可使用「&」引用前面查找時查 找到的整個內容
修飾符:bash
i #忽略大小寫 g #全局替換,默認狀況下,每一行只替換第一次出現 gc #全局替換,每次替換前詢問
查找替換中的分隔符/可替換爲其它字符,如:#,@ markdown
範例:app
s@/etc@/var@g s#/boot#/#i %s###g 全文替換
/etc/vimrc #全局 ~/.vimrc #我的
1.3.4.1 行號less
顯示:set number,簡寫 set nu編輯器
取消顯示:set nonumber, 簡寫 set nonuide
1.3.4.2 忽略字符的大小寫加密
啓用:set ignorecase,簡寫 set ic
不忽略:set noic
1.3.4.3 自動縮進
啓用:set autoindent,簡寫 set ai
禁用:set noai
1.3.4.4 複製保留格式
啓用:set paste
禁用:set nopaste
1.3.4.5 顯示**Tab**和換行符 ^I 和**$**顯示
啓用:set list
禁用:set nolist
1.3.4.6 高亮搜索
啓用:set hlsearch
禁用:set nohlsearch
1.3.4.7 語法高亮
啓用:syntax on
禁用:syntax offff
1.3.4.8 文件格式
啓用windows格式:set fifileformat=dos
啓用unix格式:set fifileformat=unix
簡寫 set ffff=dos|unix
1.3.4.9 Tab 用空格代替
啓用:set expandtab 默認爲8個空格代替Tab
禁用:set noexpandtab
簡寫:set et
1.3.4.10 Tab**用指定空格的個數代替**
啓用:set tabstop=# 指定#個空格代替Tab
簡寫:set ts=4
1.3.4.11 設置文本寬度
set textwidth=65 (vim only)
set wrapmargin=15
1.3.4.12 設置光標所在行的標識線
啓用:set cursorline,簡寫 set cul
禁用:set nocursorline
1.3.4.13 加密
啓用: set key=password
禁用: set key=
1.3.4.14 瞭解更多
set 幫助
:help option-list
:set or :set all
1.4.1 退出**VIM**
ZZ 保存退出
ZQ 不保存退出
1.4.2 光標跳轉
字符間跳轉:
h: 左 L: 右 j: 下 k: 上
#COMMAND:跳轉由#指定的個數的字符
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
#COMMAND:由#指定一次跳轉的單詞數
當前頁跳轉:
H:頁首 M:頁中間行 L:頁底
zt:將光標所在當前行移到屏幕頂端
zz:將光標所在當前行移到屏幕中間
zb:將光標所在當前行移到屏幕底端
行首行尾跳轉:
^ 跳轉至行首的第一個非空白字符
0 跳轉至行首
$ 跳轉至行尾
行間移動:
#G 或者擴展命令模式下 :# 跳轉至由第#行
G 最後一行
1G, gg 第一行
句間移動:
) 下一句 ( 上一句
段落間移動:
} 下一段 { 上一段
命令模式翻屏操做
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
1.4.3 字符編輯
x 刪除光標處的字符
#x 刪除光標處起始的#個字符
xp 交換光標所在處的字符及其後面字符的位置
~ 轉換大小寫
J 刪除當前行後的換行符
1.4.4 替換命令**(replace)**
r 只替換光標所在處的一個字符
R 切換成REPLACE模式(在末行出現-- REPLACE -- 提示),按ESC回到命令模式
1.4.5 刪除命令(**delete**)
d 刪除命令,可結合光標跳轉字符,實現範圍刪除
d$ 刪除到行尾
d^ 刪除到非空行首
d0 刪除到行首
dw
de
db
#COMMAND
dd: 剪切光標所在的行
#dd 多行刪除
D:從當前光標位置一直刪除到行尾,等同於d$
1.4.6 複製命令**(yank)**
y 複製,行爲類似於d命令
y$
y0
y^
ye
yw
yb
#COMMAND
yy:複製行
#yy 複製多行
Y:複製整行
1.4.7 粘貼命令**(paste)**
p 緩衝區存的若是爲整行,則粘貼當前光標所在行的下方;不然,則粘貼至當前光標所在處的後面
P 緩衝區存的若是爲整行,則粘貼當前光標所在行的上方;不然,則粘貼至當前光標所在處的前面
1.4.8 改變命令**(change)**
c: 刪除後切換成插入模式
c$
c^
c0
cb
ce
cw
#COMMAND
cc:刪除當前行並輸入新內容,至關於S
#cc
C:刪除當前光標到行尾,並切換成插入模式,至關於c$
1.4.9 查找
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
1.4.10 撤消更改
u 撤銷最近的更改,至關於windows中ctrl+z
#u 撤銷以前屢次更改
U 撤消光標落在這行後全部此行的更改
Ctrl - r 重作最後的「撤消」更改,至關於windows中crtl+y
. 重複前一個操做
#. 重複前一個操做#次
1.4.10 高級用法
<start position><command><end position>
常見Command:y 複製、d 刪除、gU 變大寫、gu 變小寫
範例:
0y$ 命令 0 → 先到行頭 y → 從這裏開始拷貝 $ → 拷貝到本行最後一個字符
範例:粘貼「wang」100次
100iwang [ESC]
di" 光標在」 「之間,則刪除」 「之間的內容
yi( 光標在()之間,則複製()之間的內容
vi[ 光標在[]之間,則選中[]之間的內容
dtx 刪除字符直到碰見光標以後的第一個 x 字符
ytx 複製字符直到碰見光標以後的第一個 x 字符
可視化模式
在末行有」-- VISUAL -- 「指示,表示在可視化模式
容許選擇的文本塊
v 面向字符,-- VISUAL --
V 面向整行,-- VISUAL LINE --
ctrl-v 面向塊,-- VISUAL BLOCK --
可視化鍵可用於與移動鍵結合使用
w ) } 箭頭等
突出顯示的文字可被刪除,複製,變動,過濾,搜索,替換等
輸入ctrl+v 進入可視化模式 輸入 G 跳到最後1行,選中每一行的第一個字符 輸入 I 切換至插入模式 (由於I是當前行的行首) 輸入 # 按 ESC 鍵
vim FILE1 FILE2 FILE3 ...
:next 下一個
:prev 前一個
:fifirst 第一個
:last 最後一個
:wall 保存全部
:qall 不保存退出全部
:wqall保存退出全部
1.7 多窗口模式
1.7.1 多文件分割
vim -o|-O FILE1 FILE2 ...
-o: 水平或上下分割
-O: 垂直或左右分割(vim only)
在窗口間切換:Ctrl+w, Arrow
1.7.2 單文件窗口分割
Ctrl+w,s:split, 水平分割,上下分屏
Ctrl+w,v:vertical, 垂直分割,左右分屏
ctrl+w,q:取消相鄰窗口
ctrl+w,o:取消所有窗口
:wqall 退出
有26個命名寄存器和1個無命名寄存器,常存放不一樣的剪貼版內容,能夠在同一個主機的不一樣會話(終
端窗口)間共享
寄存器名稱a,b,…,z,格式: 」寄存器 放在數字和命令之間
範例:
3"tyy 表示複製3行到t寄存器中 ,末行顯示 3 lines yanked into "t
"tp 表示將t寄存器內容粘貼
未指定,將使用無命名寄存器
有10個數字寄存器,用0,1,…,9表示,0存放最近複製內容,1存放最近刪除內容。當新的文本變動
和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不一樣會話間共享
1.9 標記和宏**(macro)**
ma 將當前位置標記爲a,26個字母都可作標記, mb 、 mc 等等
'a 跳轉到a標記的位置,實用的文檔內標記方法,文檔中跳躍編輯時頗有用
qa 錄製宏 a,a爲宏的名稱,末行提示: recording @a
q 中止錄製宏
@a 執行宏 a
@@ 從新執行上次執行的宏
#以二進制方式打開文件 vim -b binaryfile #擴展命令模式下,利用xxd命令轉換爲可讀的十六進制 :%!xxd #切換至插入模式下,編輯二進制文件 #切換至擴展命令模式下,利用xxd命令轉換回二進制 :%!xxd -r #保存退出
一、在vim中設置tab縮進爲4個字符
vim ~/.vimrc set et set ts=4
二、複製/etc/rc.d/init.d/functions文件至/tmp目錄,替換/tmp/functions文件中的/etc/sysconfifig/init
爲/var/log
:%s#/etc/sysconfifig/init#/var/log#g
三、刪除/tmp/functions文件中全部以#開頭,且#後面至少有一個空白字符的行的行首的#號
%s@^#\([[:space:]]\+\)@\1@g
四、複製/etc/grub2.cfg 到/tmp 目錄 用查找替換命令刪除文件中行首的的空白字符
:%s#^[[:space:]]\\+##g
五、 複製/etc/rc.d/init.d/functions 到 /tmp 目錄 用查找替換命令爲每行開頭爲空白字符的行的行首添加#
:%s/^[[:space:]]/#&/g
全局配置 /etc/vimrc 我的配置 ~/.vimrc 此文件要本身編輯 1 行號顯示 set nu set nonu 2 括號匹配 set sm set nosm 3. 自動縮進 set ai set noai 4 高亮搜索 set hlsearch set nohlsearch 5 語法高亮 syntax on syntax off 6 忽略大小寫 set ic set noic
vim -o|-O file1 file2
-o 水平分隔 -O垂直分隔
在竄口間切換 ctrl +w ARROW
單文件窗口分隔:
ctrl +w ,s 水平分隔
ctrl +w ,v 垂直分隔
next 下一個文件 prev 上一個文件 last 最後一個文件 first 第一個文件 例如 vim /etc/{fstab,issue} 第一個文件的前五行復制到第二個文件的結尾 例如: 第一 5yy 第二 末行模式:next 第三 在後面輸入p :wall 保存全部 :qall 退出全部
s/要查找的/要替換的/修飾符 要查找的能夠用模式, 要替換的不能夠用模式,可是可使用\1 \2 ....後項引用,還可使用&引用前面查找的整個內容 修飾符: i 忽略大小寫 g 全局替換 例如: :.,$s/r\(..\)t/R\1T/g 此時的&至關於l..x :%s/l..x/&er/g :%s@\/etc\/fstab\/@\/var\/log@ 要轉義
/pattern /\<if\> n 與命令同方向 N 與命令反方向 ?pattern
:start_pos,end_pos 相對地址定界 :#,+# :# 具體的那一行 :#,# . 當前行,例如:":.,$-1" 表示當前行到倒數第二行 % 全文,至關於 1,$ /pat1/,/pat2/第一次被pat1匹配到的行到第一次被pat2匹配的行的全部內容 #,/pat1/ /pat/,$ 使用方法:後跟一個編輯命令 d y w r 例如:將文件中指定範圍的內容保存到一個文件中 :1,5w /tmp/vim.txt 讀取文件的內容插入到當前的行裏 :15r /etc/issue 在第15行插入/etc/issue內容
向文件尾部翻一屏 ctrl+f 向文件尾部翻半屏 ctrl+d 向文件首部翻一屏 ctrl+b 向文件首部翻半屏 ctrl+u
u (undo)撤銷此前的操做 #u:撤銷指定次數的操做 撤銷此前的撤銷 ctrl +r 重複前一個編輯操做
1.按v(小寫按字符選擇) 2.選擇內容 3.y複製 4.p粘貼 =========================== 1.按 V(大寫按行選擇)選擇的內容都是到每行的行末尾
編輯模式--->輸入模式
c$ c^ c0 cb ce cw #COMMAND cc 刪除並輸入新內容 #cc
y:複製,近似於d命令 yy 複製一整行 #yy 複製多行 3yy表示複製3行 y^ y0 y$ y^複製至行首,或y0。不含光標所在處字符。y$ 複製至行尾。含光標所在處 字符。 ye yw yb yw 複製一個單詞。 y2w 複製兩個單詞。 yG 複製至文本末。 y1G 複製至文本開頭
p 緩衝區若是爲整行,則粘貼到光標所在行的下方;不然粘貼到光標所在行的後面 例如:d$刪除光標處到結尾,按p鍵就粘貼 P 緩衝區若是爲整行,則粘貼到光標所在行的上方;不然粘貼到光標所在行的前面
[操做]+[行號]+定位 前綴(操做) :d表明刪除 中綴:行號 後綴(定位):d表明行,G表明盡頭, $表明行尾,^表明行首,w表明單詞 d^ 光標所在處到行首的內容刪除 d0 光標所在處到行首的內容刪除,包括空白字符 d$ 光標所在處到行尾的內容刪除 dG 刪除到文檔結尾處 d1G 刪至文檔首部 dw 刪除一個單詞(不適用中文)相似於上一節說的cw,只是刪除後還在普通模式,使用dw刪除一個單詞,而後用.命令重複刪除單詞操做 de db #COMMOND dd 刪除一整行 輸入.(小數點)會再次刪除一行,除此以外也能夠重複其餘任意操做 #dd 包括光標所在處的行一共向下刪除#行
x 刪除光標處字符 #x 刪除光標處起始的後#個字符 xp 交換光標所在處及其後面字符的位置
{
}
(
)
#g 跳轉到第#行 G 最後一行 1G或者 gg 第一行 nG(n Shift+g) 遊標移動到第 n 行(若是默認沒有顯示行號,請先進入命令模式,輸入:set nu以顯示行號) 5G表明移動到第五行。 G表明盡頭, $表明行尾,^表明行首,w表明下一個單詞,b上一個單詞,e當前單詞末尾 f+字母 向後搜索 字母並跳轉到第一個匹配的位置 F+字母 向前搜索字母並跳轉到第一個匹配的位置
^ 跳轉到行首的第一個非空白字符 0 跳轉到行首 $ 跳轉到行尾
w 下一個單詞的詞首 e 當前或下一個單詞的詞尾 b 當前或前一個單詞的詞首 #COMMAND 一次跳轉n個單詞 cw 刪除一個字母,同時進入插入模式
h 左
j 下
k 上
l 右
#COMMAND 一次跳轉#個字符
:x 保存退出 :w /PATH/TO/SOMEFILE 當前內容保存到別的文件 命令模式下ZZ表示保存退出 :X 加密
[21:19:31root@wanghua scripts]#vim +5 /etc/fstab 打開是第五行 [21:27:20root@wanghua scripts]#vim + /etc/fstab 打開就是行尾 ][21:29:06root@wanghua scripts]#vim +/UUID /etc/fstab 找到匹配的行 [21:29:38root@wanghua scripts]#vim +/dev /etc/fstab [21:29:58root@wanghua scripts]#vim +/Acc /etc/fstab
[21:18:35root@wanghua scripts]# [21:18:35root@wanghua scripts]#which vi /usr/bin/vi [21:19:27root@wanghua scripts]#which vim /usr/bin/vim