文本編輯工具介紹
- vi:Visual Interface,文本編輯器
- 文本:ASCII,Unicode
- 文本編輯種類:
- 行編輯器:sed
- 全屏編輯器:nano,vi
- vim -Vi Improved
- 其他編輯器:
- gedit 一個簡單的圖形編輯器
- gvim 一個Vim編輯器的圖形版本
文本編輯工具vim
打開文件
- vim [OPTION]… FILE…
- vim +# :打開文件後,讓光標處於第#行,單獨+ 默認光標處於行尾
- vim +/PATTERN 讓光標處於第一個被PATTERN匹配的行的行首
- vim -b file 二進制方式打開文件
- vim -d file1 file2… 比較多個文件(擴展命令模式:使用qall退出)
- vim -R file 只讀的方式打開文件,如要保存(使用擴展命令模式
:wq!
)
vim -e file
或ex file
直接進入ex模式- 如果該文件存在,文件被打開並顯示內容,如果該文件不存在,當編輯後第一次存盤時創建它
vim的三種模式
- vim:一個模式編輯器
- 擊鍵行爲是依賴於vim的“模式”
- 三種主要模式:
- 命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本
- 插入(Insert)或編輯模式:修改文本
- 擴展命令(etended command)模式:保存,退出等
- Esc鍵 退出當前模式
- Esc鍵 Esc鍵 總是返回到命令模式
命令模式
- 字符間跳轉
h
:向左j
:向下k
:向上l
:向右#COMMAND
:數字+命令 由#指定一次跳轉的字符數(例3h:向左跳三個字符)
- 單詞間跳轉:
w
: 下一個單詞的詞首e
:當前或下一個單詞的詞尾b
:當前或前一個單詞的詞首#COMMAND
:數字+命令 由#指定一次跳轉的單詞數(例3w:下3個單詞的詞首)
- 當前頁跳轉:
H
:頁首M
:頁中間行L
:頁底zt
:將光標所在當前行移動到屏幕頂端zz
:將光標所在當前行移動到屏幕中間zb
:將光標所在當前行移動到屏幕底端
- 行首行尾跳轉:
^
跳轉至行首的第一個非空白字符0
數字0跳轉至行首$
跳轉至行尾
- 行間移動:
#G
或者擴展命令模式下:#
(跳轉至第#行)G
最後一行1G
,gg
第一行
- 句間移動(由.隔開的算句子):
)
下一句(
上一句
- 段落間移動(中間由空行算段落):
}
下一段{
上一段
- 替換命令(r,replace)
r
替換光標所在處的字符(r 需要的字符)R
切換成REPLACE模式(R 連續替換)
- 字符編輯:
x
刪除光標處的字符#x
刪除光標處起始的#個字符xp
交換光標所在處的字符及其後面字符的位置(x 剪切,p粘貼)~
轉換大小寫J
刪除當前行後的換行符
- 刪除命令(d, delet):
d
刪除命令,可結合光標跳轉字符,實現範圍刪除d$
刪除到行尾d^
刪除到非空 行首d0
刪除到行首dw
刪除到下一個單詞的詞首de
刪除到下一個單詞的詞尾db
刪除到當前或前一個單詞的詞首dd #COMMAND
刪除#個COMMAND(COMMAND是上面的跳轉,移動命令)dd
:刪除光標所在的行#dd
多行刪除(連續刪除#行)
D
:從當前光標位置一直刪除到行尾,等同於d$
- 複製命令(y,yank)
y
複製,行爲相似於d命令y$
從光標位置複製到行尾y0
從光標位置複製到行首y^
從光標位置複製到當前行第一個非空白字符ye
從光標位置複製到下一個單詞尾部yw
從光標位置複製到下一個單詞首部yb
從光標位置複製到上一個或本單詞的首部- #COMMAND
yy
:複製行- #yy 複製多行
Y
:複製整行
- 粘貼命令(p,paste):
p
緩衝區的如果爲整行(有換行符),則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的後面P
緩衝區存的如果爲整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
- 改變命令(c,change)
c
:修改後切換成插入模式- 命令模式 — > 插入模式
c$
c^
c0
cw
ce
cb
- #COMMAND
cc
:刪除當前行並輸入新內容,相當於S#cc
C
:刪除當前光標到行尾,並切換成插入模式
100iwang
[esc] 粘貼“wang”100次- 常見COMMAD
y
複製,d
刪除,gU
變大寫,gu
變小寫- 例如:
0y$
命令- 0 ->先到行頭
- y ->從這裏開始拷貝
- $ ->拷貝到本行最後一個字符
di"
光標在“光標”之間,則刪除""之間的內容yi(
光標在()之間,則複製()之間的內容vi[
光標在[]之間,則選中[]之間的內容dtx
刪除字符直到遇見光標之後的第一個x字符(x是26個字符之間)ytx
複製字符直到遇見光標之後的第一個x字符(x是26個字符之間)ZZ
: 保存退出ZQ
: 不保存退出
命令模式翻屏操作
- Ctrl + f 向文件尾部翻一屏
- Ctrl + b 向文件首部翻一屏
- Ctrl + d 向文件尾部翻半屏
- Ctrl + u 向文件首部翻半屏
插入模式
i
: 當前光標位置開始編輯a
:當前光標的後一個位置開始編輯o
:當前光標行下面新建空行編輯I:
當前光標所在行的行首開始編輯A
:當前光標所在行的行尾開始編輯O
: 當前光標所在行的上邊新建一個空行開始編輯
擴展命令模式
- 使用英文的
:
打開 :q
:保存:w
:保存:wq
:保存退出:q!
:強制退出:x
:保存退出:r filename
讀文件內容到當前文件中:w filename
: 將當前文件內容寫入到另一個文件中:! command
:執行Linux命令,回車返回編輯文件:r! command
: r(read)讀取Linux運行結果到光標下邊新建一行- 地址定界:
- :start_pos,end_pos
:#
具體第#行,例如:2
表示第2行:#,#
從左側#表示起始行,到右側#表示結尾行#,+#
從左側#表示的起始行,加上右側#表示的行數- 例如: 2,+3 表示2到5行
.
當前行$
最後一行.,$-1
當前行到倒數第二行
%
全文,相當於1,$/pattern/
匹配pattern的行/par1/,/pat2/
- 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/
/pat/,%
- 使用方式:後跟一個編輯命令
d
: 刪除,例如:.d
刪除當前行;:.,10 d
刪除當前行到第10行y
:複製,同上類似w file
: 將範圍內的行另存到指定文件r file
: 在指定位置插入指定文件的所有內容
- 查找
/pattern
:從當前光標所在處向文件尾部查找?pattern
:從當前光標所在處向文件首部查找n
:與命令同方向搜索N
: 與命令反方向搜索
- 撤銷更改
u
: 撤銷最近的更改#u
: 撤銷之前的多次更改U
: 撤銷光標落在這行後所有此行的更改Ctrl -r
:重作最後的“撤銷”更改.
:重複前一個操作#.
:重複前一個操作#次
- 替換
- 在擴展命令模式下完成查找替換操作
- 格式:s/要查找的內容/替換爲的內容/修飾符
- 要查找的內容:可使用模式
- 替換爲的內容:不能使用模式,但可以使用\1,\2,…等後向引用符號;還可以使用"&"引用前面查找時查找到的整個內容
- 修飾符:
i
忽略大小寫g
全局替換,默認情況下,每一行只替換第一次出現gc
全局替換,每次替換前詢問
- 查找替換中的分隔符/可替換爲其他字符
s@/etc@/var@g
s#/boot#/#i
- 在擴展命令模式下完成查找替換操作
vim的寄存器
- 有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼板內容,可以不同會話間共享
- 寄存器名稱a,b,…z,格式:
"寄存器
放在數字和命令之間”- 如:
3"tyy
表示複製3行到t寄存器中 "tp
表示將t寄存器內容粘貼
- 如:
- 未指定,將使用無命名寄存器
- 有10個數字寄存器,用0,1,…9表示,0存放最近復內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能再不同會話間共享
標記和宏(macro)
ma
:將當前位置標記爲a,26個字母均可做標記,mb,mc等等'a
:跳轉到a標記的位置,實用的文檔內標記方法,文檔中跳躍編輯時很有用qa
:錄製宏a,a爲宏的名稱q
:停止錄製宏@a
:執行宏a@@
:重新執行上次執行的宏
編輯二進制文件
- 以二進制方式打開文件
vim -b binaryfile
- 擴展命令模式下,利用xxd命令轉換爲可讀的十六進制
:%!xxd
- 插入模式下,編輯二進制文件
- 擴展命令模式下,利用xxd命令轉換回二進制文件
:%!xxd -r
- 保存退出
可視化模式
- 允許選擇文本塊
v
面向字符V
面向行- Ctrl -v 面向塊
- 可視化鍵可用於與移動鍵結合使用
- w ) } 箭頭等
- 突出顯示的文字可被刪除,複製,變更,過濾,收索,替換等
vim -o file1 file2 :打開兩個文件
使用多個“窗口”
- 多文件分割
- vim -o|-O file1 file2…
- -o:水平分割
- -O:垂直分割
- 在窗口間切換:Ctrl + w,Arrow
- 單文件窗口分割
Ctrl+w,s
:split,水平分割Ctrl+w,v
:vertical,垂直分割Ctrl+w,q
:取消相鄰窗口Ctrl+w,o
:取消全部窗口:wqall
退出
定製vim特性
- 配置文件:永久有效
- 全局:/etc/vimrc
- 個人:~/.vimrc(新建這個文件)
- 擴展命令模式:當前vim進程有效
- (1)行號
- 顯示:set number,簡寫 set nu
- 取消顯示:set nonumber,簡寫 setnonu
- (2)忽略字符的大小寫
- 啓用:set ignorecase,簡寫set ic
- 不忽略:set noic
- (3)自動縮進
- 啓用:set autoindent,簡寫set ai
- 禁用:set noai
- (4)複製保留格式
- 啓用:set paste
- 禁用:set nopaste
- (5)顯示Tab和換行符^I和顯示$顯示
- 啓用:set list
- 禁用:set nolist
- (6)高亮搜索
- 啓用:set hlsearch
- 禁用:set nohlsearch
- (7)語法高亮
- 啓用:syntax on
- 禁用:syntax off
- (8)文件格式
- 啓用windows格式:set fileformat=dos
- 啓用unix格式:set fileformat=unix
- 簡寫 set ff=dos|unix
- (9)設置文本寬度
- set textwidth=65(vim only)
- setwrapmargin=15
- (10)設置光標所在行的標識線
- 啓用:set cursorline ,簡寫set cul
- 禁用:set nocursorline