vim

vim 命令格式

+# 打開文件後,讓光標處於第#行的行首,+默認行尾
+/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  全文替換

定製**vim**的工做特性

/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

多文件模式

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 退出

vim**的寄存器**

有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

vim配置文件

全局配置 /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 change)

編輯模式--->輸入模式

c$
c^
c0
cb
ce
cw
#COMMAND
cc 刪除並輸入新內容
#cc

複製命令 y (yank)

y:複製,近似於d命令

yy  複製一整行
#yy 複製多行  3yy表示複製3行
y^
y0
y$
   y^複製至行首,或y0。不含光標所在處字符。y$ 複製至行尾。含光標所在處     字符。
ye
yw
yb
yw 複製一個單詞。
y2w 複製兩個單詞。
yG 複製至文本末。
y1G 複製至文本開頭

粘貼命令(put paste)

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

文本編輯器vim 文本數據ASCII Unicode(國際標準規定

[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
相關文章
相關標籤/搜索