# 简介
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站 ([http://www.vim.org](http://www.vim.org/)) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
# vim 的使用
## 启动
* `vim -c cmd file`: 在打开文件前,先执行指定的命令;
* `vim -r file`: 恢复上次异常退出的文件;
* `vim -R file:`:以只读的方式打开文件,但可以强制保存;
* `vim -M file`:以只读的方式打开文件,不可以强制保存;
* `vim -y num file`: 将编辑窗口的大小设为`num`行;
* `vim + file`: 从文件的末尾开始;
* `vim +num file`: 从第num行开始;
* `vim +/string file`: 打开file,并将光标停留在第一个找到的string上。
* `vim –remote file`:用已有的vim进程打开指定的文件。 如果你不想启用多个vim会话,这个很有用。但要注意, 如果你用vim,会寻找名叫VIM的服务器;如果你已经有一个gvim在运行了, 你可以用gvim –remote file在已有的gvim中打开文件。
## vim 的几种模式
* 命令模式:可以使用快捷键命令,或按:输入命令行。
* 插入模式:可以输入文本,在正常模式下,按`i`、`a`、`o`等都可以进入插入模式。
* 可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。
* 替换模式:正常模式下,按R进入。
## 命令模式:
启动`vim`后,默认就是命令模式,在插入模式时,也可以按键盘上的`ESC`键也可进入命令模式,在此模式下我们不可以直接对文档内容进行编辑,但可以输入相关命令来完成我们想要的操作,以下是几个常用的命令:
### 进入插入模式
* `i` 切换到输入模式,可以对文件进行编辑(光标位置不变)
* `o` 切换到输入模式,可对文件进行编辑(在光标后新增一行,并且光标移动至新行行首)
* `a` 切换到输入模式,可对文件进行编辑(光标向后移动一个字符)
### 打开或保存文件
* `:e file` –关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告。
* `:e! file` –放弃对当前文件的修改,编辑新的文件。
* `:e+file` – 开始新的文件,并从文件尾开始编辑。
* `:e+n file` – 开始新的文件,并从第n行开始编辑。
* `:enew` –编译一个未命名的新文档。
* `:e` – 重新加载当前文档。
* `:e!` – 重新加载当前文档,并丢弃已做的改动。
* `:e#`或`ctrl+^` – 回到刚才编辑的文件,很实用。
* ` :f`或`ctrl+g` – 显示文档名,是否修改,和光标位置。
* `:f filename` – 改变编辑的文件名,这时再保存相当于另存为。
* `gf` – 打开以光标所在字符串为文件名的文件。
* `:w` – 保存修改,不退出编辑器。
* `:n1,n2w filename` – 选择性保存从某n1行到另n2行的内容。
* `:wq` – 保存并退出。
* `ZZ` – 保存并退出。
* `:x` – 保存并退出。
* `:q`或`quit` –退出当前窗口。
* `:saveas newfilename` – 另存为
### 光标操作
* `h` 左移一个字符
* `l` 右移一个字符
* `j` 下移一行
* `k` 上移一行
>[info] 光标的移动操作可以配合数字使用,比如`3h`可以表示将光标左移3个字符,`10j`表示将光标下移`10`行
* `gg` 将光标移到到文件头部
* `GG` 将光标移动到文件末尾
### 翻屏操作
* `ctrl+f`: 下翻一屏
* `ctrl+b`: 上翻一屏
* `ctrl+d`: 下翻半屏
* `ctrl+u`: 上翻半屏
* `ctrl+e`: 向下滚动一行
* `ctrl+y`: 向上滚动一行
### 查找
`/something`: 在后面的文本中查找`something`
`?something`: 在前面的文本中查找`something`
### 替换
* `:s/old/new` 用`new`替换当前行第一个`old`
## 输入模式
### 复制粘贴
* `[n]x`::剪切光标右边n个字符
* `[n]X`: 剪切光标左边n个字符
* `y`:复制在可视模式下选中的文本
* `yy` 或 `Y`: 复制整行文本
>[info] 本文部分内容来自[https://blog.csdn.net/weixin\_37657720/article/details/80645991](https://blog.csdn.net/weixin_37657720/article/details/80645991) ,感谢博主和CSDN,详细使用方法可点击链接查看
- 序言
- Linux 的安装
- VMware 的安装
- VMware 的配置
- CentOS 下载与虚拟机硬件配置
- Linux 的分区
- ContOS 安装
- 虚拟机网络配置
- 远程连接工具安装
- 基础(旧)
- Linux 和 Windows 的区别
- 目录结构
- 注意事项
- Linux的常用命令
- 用户及用户组
- 文件及权限
- 目录与文件权限的意义
- 文件及目录管理相关
- 常用命令
- 系统安装
- Linux的简介
- Linux 各发行版介绍
- CentOS的部署
- 基础
- 文件和用户管理
- Linux目录结构
- 文件管理相关
- cd 切换目录
- pwd 显示当前位置
- ls 列出目录下的文件和子目录
- touch 创建文件
- mkdir 创建目录
- cp 复制文件/目录
- mv 移动或改名文件/目录
- rm 删除文件/目录
- chattr 改变文件属性
- lsattr 显示文件属性
- 用户管理
- useradd 添加用户
- passwd 修改用户密码
- id 查看用户ID信息
- userdel 删除用户
- usermod 修改用户信息
- groupadd 创建用户组
- groupdel 删除用户组
- su 切换用户帐号
- sudo 以管理员的身份执行命令
- 权限管理
- chmod 修改文件/目录权限
- chown 修改文件拥有者或所属组
- chgrp 修改文件所属组
- setfacl 设置文件权限列表
- getfacl 查看文件权限列表
- vim的使用
- 进程管理
- ps 查看进程
- top 动态显示进程
- kill 杀死进程
- nice 修改进程优先级
- jobs 显示后台任务列表及任务状态
- fg 将后台运行的进程调整至前台运行
- bg 将在后台暂停进行继续执行
- 磁盘管理
- lsblk 列出块设备信息
- fdisk 磁盘分区
- partprobe 重新读取分区表
- mkfs 建立文件系统(格式化)
- mont 挂载设备
- df 查看磁盘使用情况
- unount 卸载挂载设备
- 交换空间 swap
- free 查看内存使用状态
- mkswap 设置交换分区
- swapon 激活交换空间
- LVM逻辑卷管理
- LMV的工作原理
- pvcreate 创建物理卷
- pvs 查看物理卷
- pvscan 查看每个PV的信息
- pvdisplay 显示物理卷详细信息
- vgcreate 创建卷组
- vgs 查看卷组
- vgscan 查看每个VG的信息
- vgdisplay 显示卷组详细信息
- lvcreate 创建逻辑卷
- vgextend 扩展卷组空间
- lvextend 扩展逻辑卷空间
- resize2fs 调整文件系统大小
- RAID
- 文件查找和压缩
- which 命令查找
- find 根据文件名查找文件
- locate 查找文件
- tar 文件打包
- 软件安装
- RPM包管理
- yum 安装软件
- rpm 安装软件
- 源码包管理
- 计划任务
- at 一次性计划任务
- cron 循环任务
- 日志系统
- 网络管理
- ip 显示或设置网络设备
- OSI简介