Linux--vi/vim
vi 文本編輯器 (vim vi的加強版本)
打開文件
vim [option] … file...vim
+# 打開文件後,讓光標處於第#行的行首
+/PATTERN 打開文件後,光標處於第一個被parrent匹配到的行首
-b file 二進制方式打開文件
-d file1 file2 對比多個文件
-m file 只讀打開文件
-e 直接進入ex 模式
若是該文件存在,文件被打開並顯示內容windows
若是文件不存在,當編輯後第一次存盤時建立它編輯器
vim的模式
按鍵行爲是依賴於vim的模式spa
- 命令模式:默認模式,移動光標,剪切/粘貼文本
- 插入或者編輯模式:修改文本
- 擴展命令模式(末行模式):保存、退出等
esc 鍵 退出當前模式unix
模式轉換
- 命令模式 —> 插入模式
- i 在光標所在處輸入
- I 在當前光標所在行的行首輸入
- a 在光標所在處後面輸入
- A 在光標所在行的行尾輸入
- o 在當前光標所在行的下方打開一個新行
- O 在當前光標所在行的上方打開一個新行
- 插入模式 —> 命令模式
- 命令模式—> 末行模式
- 擴展命令模式—>命令模式
關閉文件
- 擴展命令模式
- :q 退出
- :q! 強制退出
- :wq 保存退出
- :x 保存退出
- 命令模式
擴展命令模式
- 按「:」進入ex模式
- 建立一個命令提示符:處於底部的屏幕左側
- 命令:
- w 寫(存)磁盤文件
- wq 保存並退出
- x 寫入並退出
- q 退出
- q! 不存盤退出
- r filename 讀文件內容到當前文件中
- w filename 將當前文件內容寫入另一個文件,另存爲
- !command 執行命令
- r!command 讀入命令的輸出
命令模式光標跳轉code
- 字符鍵跳轉
- 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 向文件首部翻半屏
命令模式操做
- 字符編輯
- x 刪除光標處的字符
- #x:刪除#個字符
- xp 交換光標所在處的字符與後面的字符
- ~ 轉換大小寫
- J 刪除當前行後的換行符
- 替換
- 刪除
- d 刪除,能夠結合光標跳轉字符
- d$ 刪除到行尾
- d^ 刪除到非空行首
- d0 刪除到行首
- dw: 刪除一個單詞
- de: 向後刪除一個單詞
- db 想前刪除一個單詞
- \COMMAND
- dd 刪除光標所在的行
- #dd 多行刪除
- dgg 刪除到文件首部
- dG 刪除到文件尾部
- D 至關於d$
- 複製
- y 複製,能夠結合光標跳轉字符
- y$
- y0
- y^
- ye
- yw
- yb
- #command
- yy 複製行
- #yy 複製多行
- Y 複製整行
- 粘貼
- p 若是是整行,則粘貼當前行所在行的下方,不然,則粘貼在當前光標所在行的後面
- P若是是整行,則粘貼當前行所在行的上方,不然,則粘貼在當前光標所在行的前面
- 改變命令
- c 修改後切換成插入模式
- c$
- c^
- c0
- cb
- ce
- cw
- #command
- cc 刪除當前行並輸入新的內容
- #cc
- C 刪除當前光標至行尾,並切換成插入模式
- 10ialex [esc] 粘貼10次alex
- 查找
- /pattern 從當前光標所在處向文件底部查找
- ?pattern 從當前光標所在處向文件首部查找
- n 與命令同方向
- N 與命令反方向
- 撤銷更改
- u 撤銷最近的更改
- #u 撤銷以前屢次更改
- U 撤銷光標落在這行後全部此行的更改
- ctrl+r 重作最後的 撤銷更改
- . 重複前一個操做
- n. 重複前一個操做n次
擴展命令模式
地址定界
:start,endorm
# 具體第#行blog
#,# 從左側#表示起始行,到右側#表示結尾行進程
#,+# 從左側#表示的起始行,加上右側#表示的行數 :2,+3 表示2到5行io
. 當前行
$ 最後一行
$-# 倒數第#+1行
.,$-1至關於當前行到倒數第二行
% 全文
/pat1/,/pat2/ 從第一個被pat1匹配到的行開始,一直到第一次被pat2匹配到的行開始
#, /pat/
/pat/,$
使用方式 後跟一個編輯命令
- d
- y
- w file :將範圍內的行另存到指定的文件中
- r file 在指定位置插入指定文件中的內容
查找並替換
- :s 在擴展模式下完成查找替換操做
- 格式 :s/要查找的內容/替換爲的內容/裝飾器
- 要查找的內容:可以使用模式
- 要替換的內容:不能使用模式,但可使用\1,\2等,還可使用「&」引用前面查找到整個內容
- 修飾符
- i 忽略大小寫
- g 全局替換 默認狀況下,每一行至替換第一個出現的
- gc 全局替換,每次替換前詢問
- 查找替換中的分隔符/能夠替換成其餘字符
可視化模式
- 容許選擇的文本塊
- v 面向字符
- V 面向行
- ctrl -v 面向塊
- 能夠化鍵能夠與移動鍵結合使用
- 突出顯示的文字能夠被刪除,複製,變動,過濾,收拾,替換等
多文件操做
vim file1 file2 file3
- :next 下一個
- :prev 前一個
- :first 第一個
- :last 最後一個
- :wall 保存全部
- :qall 退出全部
- :wqall
使用多個窗口
- 多文件分割
- vim -o|-O file1 file2
- -o 水平分割
- -O 垂直分割
- 切換 ctrl+w
- 單文件分割
- ctrl-w,s 水平分割
- ctrl-w,v 垂直分割
- ctrl-w,q 取消相鄰窗口
- ctrl-w,o 取消所有窗口
- :wqall
定製vim的工做特性
- 配置文件:永久生效
- 全局:/etc/vimrc
- 我的:~/.vimrc
- 擴展模式:當前vim進程有效
- 行號 set nu set nonu
- 忽略字符大小寫(搜索) set ic set noic
- 自動縮進(和上一行對齊) set ai set noai
- 高亮搜索 set hlsearch set nohlsearch
- 語法高亮 syntax on syntax off
- 文件格式
- 啓用windows格式: set fileformat=dos
- 啓用unix格式:set fileformat=unix
- 簡寫 set ff=doc|unix
- 設置貫標所在行的標識線 set cul set nocul
- 獲取幫助 :set all
- vim 內置幫助
- :help
- :help topic
- vimtutor