**Vim是最好用的編輯器!!!
Vim是最好用的編輯器!!!
Vim是最好用的編輯器!!!**
## 簡介
Vim(Vi[Improved])編輯器是功能強大的跨平臺文本文件編輯工具,繼承自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
獲取幫助:help subject
**這里附上我的Vim的配置,沒有過多的花哨的功能,簡單壓倒一切~**
```
autocmd BufNewFile *.sh, exec ":call SetTitle()"
let $author_name = "yjscloud"
let $author_email = "yjscloud@gmail.com"
func SetTitle()
call setline(1,"\#===================================================================")
call append(line("."), "\# File Name : ".expand("%"))
call append(line(".")+1, "\# Author : ".$author_name)
call append(line(".")+2, "\# Email : ".$author_email)
call append(line(".")+3, "\# Created Time : ".strftime("%c"))
call append(line(".")+4, "\# Version : Version: 0.1")
call append(line(".")+5, "\# Description : ")
call append(line(".")+6, "\#===================================================================")
call append(line(".")+7, "\#!/bin/bash")
call append(line(".")+8, "")
endfunc
""""""""""""
"=>全局配置
""""""""""""
set nocompatible
set history=100
filetype on
filetype plugin on
filetype indent on
set autoread
set mouse=a
""""""""""""
"=>字體和顏色
""""""""""""
syntax enable
set cursorline
hi cursorline guibg=#00ff00
hi CursorColumn guibg=#00ff00
""""""""""""""
"=>代碼折疊功能
""""""""""""""
set foldenable
set foldmethod=manual
set foldcolumn=0
setlocal foldlevel=3
set foldclose=all
nnoremap <space> @=((foldclosed(line('.')) <0 ) ? 'zc' : 'zo')<CR>
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set smarttab
set ai
set si
set wrap
set sw=4
""""""""""""""
"=>Vim界面
""""""""""""""
set wildmenu
set ruler
set cmdheight=1
set nu
set lz
set backspace=indent,eol,start
set whichwrap+=<,>,h,l
set magic
set noerrorbells
set novisualbell
set showmatch
set mat=2
set hlsearch
set ignorecase
""""""""""""""
"=>Vim字符
""""""""""""""
set encoding=utf-8
set fileencodings=utf-8
set termencoding=utf-8
""""""""""""""
"=>Vim其他設置
""""""""""""""
set smartindent
set cin
set showmatch
set guioptions-=T
set guioptions-=m
set vb t_vb=
set laststatus=2
set pastetoggle=<F9>
set background=dark
highlight Search ctermbg=black ctermfg=white guifg=white guibg=black
```
- 獻給我的朋友們
- 一、個人對學習的看法
- 二、運維技能圖譜
- 三、運維常用技能
- 3.1 Vim(最好用的編輯器)
- 3.2 Nginx & Tengine(Web服務)
- 1. Nginx介紹和部署
- 2. Nginx配置解析
- 3. Nginx常用模塊
- 4. Nginx 的session 一致性問題
- 3.3 Tomcat(Web中間件)
- 3.4 Keepalived(負載均衡高可用)
- 3.5 Memcache(分布式緩存)
- 3.6 Zookeeper(分布式協調系統)
- 3.7 KVM(開源虛擬化)
- 1. 虛擬化介紹
- 2. KVM基礎
- 3. 設置VNC和時間同步
- 4. kvm虛擬機快照備份
- 5. kvm虛擬機在線擴展磁盤
- 6. kvm虛擬機靜態遷移
- 7. kvm虛擬機動態遷移
- 8. kvm虛擬機存儲池配置
- 9. cpu添加虛擬化功能
- 3.8 GitLab(版本控制)
- 3.8.1 GitLab安裝與漢化
- 3.9 Jenkins(運維自動化)
- 3.10 WAF(Web防火墻)
- 3.10.1初探WAF
- 四、常用數據庫
- 4.1 MySQL(關系型數據庫)
- 1. MySQL源碼安裝
- 4.2 Mongodb(適用與大數據分析的數據庫)
- 4.3 Redis(非關系數據庫)
- 五、自動化運維工具
- 5.1 Cobbler(系統自動化部署)
- 5.2 Ansible(自動化部署)
- 5.3 Puppet(自動化部署)
- 5.4 SaltStack(自動化運維)
- 六、存儲
- 6.1 GFS(文件型存儲)
- 6.2 Ceph(后端存儲)
- 七、運維監控工具
- 7.1 對監控的理解
- 7.2 Zabbix(運維監控)
- 7.2.1 Zabbix簡介
- 7.2.2 Zabbix服務部署
- 1. Zabbix服務端部署
- 2. Zabbix客服端部署
- 3. 配置前端展示
- 4. zabbix告警配置
- 7.2.3 Zabbix監控服務
- 1. 監控網絡設備
- 2. 自定義Nginx監控
- 7.3 云鏡(安全監控)
- 7.4 ELK(日志收集展示)
- 八、運維云平臺
- 8.1 OpenStack(開源云操作系統)
- 8.1.1 OpenStack簡介
- 8.1.2 實驗架構設計
- 8.1.3 集群環境準備
- 8.1.4 controller節點部署
- 1. 安裝Mariadb Galera Cluster集群
- 2. 安裝RabbitMQ Cluster集群
- 3. 安裝Pacemaker
- 4. 安裝HAProxy
- 5. 安裝配置Keystone
- 6. 安裝配置glance
- 1. 制作鏡像模板
- 7. 安裝配置nova
- 8. 安裝配置neutron
- 1. 配置虛擬機網絡
- 9. 安裝Dashboard
- 10. 安裝配置cinder
- 8.1.5 compute節點部署
- 1. 安裝相關軟件包
- 2. 安裝Neutron
- 3. 配置cinder
- 4. 創建第一個虛擬機
- 8.1.6 OpenStack報錯處理
- 1. cinder僵尸卷刪除
- 8.1.7 快速孵化虛擬機方案
- 8.1.8 Kolla容器化部署OpenStack
- 1. 單點部署
- 2. 多節點部署
- 8.2 Tstack(騰訊云平臺)
- 8.3 K8s(微服務容器化)
- 九、運維編程技能
- 9.1 Shell(運維必會語言)
- 9.2 Python(萬能的膠水語言)
- 十、Devops運維
- 10.1 理念
- 10.2 Devops實戰