**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实战