Vim編輯器是功能強大的跨平臺文本文件編輯工具,繼承自Unix系統的Vi編輯器,支持Linux/Mac OS X/Windows系統,利用它可以建立、修改文本文件。進入Vim編輯程序,可以在終端輸入下面的命令:
~~~
$vim [filename]
~~~
其中filename是要編輯器的文件的路徑名。如果文件不存在,它將為你建立一個新文件。
## Vim使用
### vim:模式化編輯器
~~~
基本模式:編輯模式,命令模式,輸入模式,末行模式(內置的命令行模式)
打開文件:
# vim [OPTION]...FILE...
+#:打開文件后,直接讓處于第#行的行首
模式轉換:
ESC鍵:
編輯模式-->輸入模式:
i: 在光標所在處的前方轉換為輸入模式
a: 在光標所在的后方轉換為輸入模式
o: 在光標所在行的下方新建一個空行并轉換為輸入模式
I: 跳轉至行首
A:跳轉至行尾
O: 光標所在行的上方新建一個空白行
輸入模式-->編輯模式
ESC
編輯模式-->末行模式
:
末行模式-->編輯模式
ESC
~~~
### 關閉文件:
~~~
:q:退出
:q! 強制退出,丟棄做出的修改
:wq 保存退出
:x 保存退出
:wq! 強制保存退出
:w :/PATH/TO/SOMEWHERE
ZZ:保存退出
~~~
### 光標移動:
#### 字符間移動:h,j,k,l
~~~
h:左
l:右
j:下
k:上
#{h|j|k|l}: 跳#個字符
~~~
#### 單詞間移動
~~~
w: 下一個單詞詞首
e: 當前單詞或下一個單詞詞尾
b: 當前單詞或前一個單詞詞首
#{w|e|b}:跳#個單詞
~~~
#### 行內移動
~~~
^: 跳轉至行首第一個非空白字符
0:跳轉至絕對行首
$: 跳轉至絕對行尾
~~~
#### 行間移動:
~~~
#G: 直接跳轉至第#行;
G:最后一行
1g,gg:回至第一行
句子間移動:
)
(
段落間移動:
}
{
~~~
### vim編輯命令
#### 字符編輯:
~~~
x: 刪除光標所在處的字符
#x:刪除光標起始的#字符
~~~
#### 替換命令
~~~
r:替換光標所在處的字符
~~~
#### 刪除命令
~~~
d:結合光標跳轉字符使用,刪除跳轉范圍內的字符
d$:刪除光標所在行
d^:刪除空格
dw:刪除一個字符
de:向后刪除一個單詞
db:向前刪除一個單詞
dd: 刪除光標所在行
#dd:多行刪除
~~~
#### 粘貼命令
~~~
p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在的后面;
P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在的前面;
~~~
#### 復制命令
~~~
y:復制,工作行為與d相似
yy:復制行
#yy:復制多行
~~~
#### 改變命令
~~~
c:修改,工作行為與d相似
編輯模式-->末行模式
cc:刪除并輸入新內容
#cc:
~~~
#### 可視化模式
~~~
v:按字符選定
V:按行選定
~~~
#### 撤銷操作
~~~
u(undo):撤銷此前的操作
#u:撤銷指定撤銷次數
撤銷此前的撤銷:
ctrl+r
重復前一個編輯操作:.
~~~
#### 翻屏操作
~~~
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
~~~
### vim中的末行模式
地址定界
~~~
:start_pos,end_pos
#:具體第#行,例如2表示第2行
#,#:從左側#表示行起始,到右側#表示行結尾
#,+#:從左側#表示的行起始,加上右側#表示的行數
.:當前行
$:最后一行
%:全文,相當于1,$
/pat1/,/pat2/:
從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
使用方式:
后面跟一個編輯模式
d
y
w /PATH/TO/SOMEWHERE:將范圍內的行另存至指定文件中
r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有內容
~~~
### 查找
~~~
/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
n:與命令同方向
N:與命令反方向
~~~
###查找并替換
~~~
s:在末行模式下完整查找替換操作
s/要查找的內容/替換為的內容/修飾符
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1,\2...等后向引用符號;還可以使用“&”引用前面查找到的整個內容
修飾符:
i:忽略大小寫
g:全局替換;默認情況下,每一行只替換第一次出現
~~~
### 練習:
~~~
1、復制/etc/grub2.cfg至/tmp/目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符
%s/^[[:space:]]\+//g
2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查的替換命令為/tmp/functions的每行開頭為空白字符的行行首添加一個#號;
%s/^[[:space:]]/#&/
~~~
### 多文件模式:
~~~
vim FILE1 FILE2 FILE3....
:next 下一個
:prev 前一個
:last 最后一個
:first 第一個
:wall 保存退出
:qall 退出所有
~~~
### 多窗口模式
~~~
多文件:
vim
-o: 水平分割
-O: 垂直分割
Ctrl+w, Arrow
單文件:
Ctrl+w, s: 水平分割
Ctrl+w, v: 垂直分割
~~~
### 定制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
~~~
- 文章翻譯
- Large-scale cluster management at Google with Borg
- Borg Omega and kubernetes
- scaling kubernetes to 7500 nodes
- bpf 的過去,未來與現在
- Demystifying Istio Circuit Breaking
- 知識圖譜
- skill level up graph
- 一、運維常用技能
- 1.0 Vim (編輯器)
- 1.1 Nginx & Tengine(Web服務)
- 基礎
- 1.2 zabbix
- 定義
- 登錄和配置用戶
- 1.3 RabbitMQ(消息隊列)
- 原理
- RabbitMQ(安裝)
- 1.4虛擬化技術
- KVM
- 1.5 Tomcat(Web中間件)
- 1.6Jenkins
- pipline
- 1.7 Docker
- network
- 1.8 Keepalived(負載均衡高可用)
- 1.9 Memcache(分布式緩存)
- 1.10 Zookeeper(分布式協調系統)
- 1.11 GitLab(版本控制)
- 1.12 Jenkins(運維自動化)
- 1.13 WAF(Web防火墻)
- 1.14 HAproxy負載均衡
- 1.15 NFS(文件傳輸)
- 1.16 Vim(編輯器)
- 1.17 Cobbler(自動化部署)
- 二、常用數據庫
- 2.1 MySQL(關系型數據庫)
- mysql主從復制
- 2.2 Mongodb(數據分析)
- 2.3 Redis(非關系數據庫)
- 三、自動化運維工具
- 3.1 Cobbler(系統自動化部署)
- 3.2 Ansible(自動化部署)
- 3.3 Puppet(自動化部署)
- 3.4 SaltStack(自動化運維)
- 四、存儲
- 4.1 GFS(文件型存儲)
- 4.2 Ceph(后端存儲)
- 五、運維監控工具
- 5.1 云鏡
- 5.2 ELK
- 六、運維云平臺
- 6.1 Kubernetes
- 6.2 OpenStack
- 介紹
- 安裝
- 七、Devops運維
- 7.1 理念
- 7.2 Devops運維實戰
- 八、編程語言
- 8.1 Shell
- 書籍《Wicked Cool Shell Scripts》
- 8.2 Python
- 8.3 C
- 8.4 Java
- leecode算法與數據結構
- 九、雜記
- 高優先級技能
- 知識點
- JD搜集
- 明顯的短板
- 1.0 Python
- 1.1 Kubernetes
- 1.18.2 《kubernetes in action》
- 遺漏知識點
- 1.18.3 GCP、azure、aliyun
- Azure文檔
- 1.18.5 《program with kubernetes》
- Istio
- HELM
- 《Kubernetes best practice》
- Kubernetes源碼學習
- Scheduler源碼
- 調度器入口
- 調度器框架
- Node篩選算法
- Node優先級算法
- pod搶占調度
- 入口
- 主要代碼結構
- new
- 文章翻譯
- Flannel
- 從二進制集群搭建
- 信息收集
- docker優化
- 1.2 shell
- 面試題
- grep awk sed 常見用法
- shell實踐
- 1.3 Data structure(數據結構)
- Calico
- Aliyun文檔以及重點模塊
- git
- 大數據組件
- 前端,后端,web框架
- cgroup,namespace
- 內核
- Linux搜集
- crontab
- centos7常用優化配置
- centos Mariadb
- eBPF
- ebpf的前世今生
- Linux性能問題排查與分析
- 性能分析搜集
- 性能分析常用10條
- 網絡性能優化
- 文本處理命令
- sql
- Iptables
- python面試題
- iptables
- iptables詳細
- zabbix面試題,proj
- prometheus
- web中間件
- nginx
- Haproxy
- grep sed awk
- Linux常用命令
- 云平臺
- 書籍Linux應用技巧
- kafka
- kafka面試題
- ETCD
- Jenkins
- 3天補充的點
- K8s源碼
- K8s
- k8s實操
- etcd
- test
- BPF
- PSFTP使用
- StackOverflow問答精選
- 問題
- 我對于學習思考
- 修改ssh超時時間
- 課程目錄
- 運維與運維開發
- The Person
- 個人雜談
- mysql主從復制
- 對于工作的認識與思考