1.vi编辑器介绍
vim是全屏幕纯屏幕纯文本编辑器, 是vi编辑器的增强版. 可以利用别名让输入vi命令时, 实际上执行vim编辑器, 例如:
alias vi = "vim"
#定义别名
这样定义的别名是临时生效, 如果需要永久生效, 请放入环境变量配置文件(~/.bashrc)
2.vim基本的使用
2.1vim的工作模式
vim工作在三种模式之下:
命令模式: 主要使用快捷键的模式, 是学习的重点, 命令模式想要进入输入模式, 可以使用以下方法:
命令 | 作用 |
---|---|
a | 在光标所在字符后插入, 可以理解为追加 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
输入模式: 主要用于文本编辑, 和记事本类似, 输入数据就好
末行模式(编辑模式):
:w 保存不退出
:w 新文件名 把文件另存为新文件
:q 不保存退出
:wq 保存退出
:! 强制
:q! 强制不保存退出, 用于修改文件后, 不保存数据退出
:wq! 强制保存退出, 当文件的所有者或者root用户, 对文件没有写权限的时候, 强制写入数据使用
2.2命令模式操作
2.2.1移动光标
1)上下左右移动光标
方法一: 上下左右方向键
方法二: h, j, k, l(左, 下, 上, 右)
2)把光标移动到文件头或尾
gg: 移动到文件头
G: 移动到文件尾
3)移动到行首或行尾
^: 移动到行首
$: 移动到行尾
4)移动到指定行
:n 数字: 移动到第几行
2.2.2删除或剪切
1)删除字母
x: 删除单个字母
nx: 删除那个字母
n是数字, 如果打算从光标位置删除连续的10个字母, 可以使用"10x", 删除字母并不符合使用的习惯, 更多的是在编辑模式下, 使用Backspace删除字母
2)删除整行或剪切
dd: 删除单行
ndd: 删除多行
:n1, n2d 删除指定范围的行
删除整行或者多行, 这是我们常见的删除方式, 这里的dd快捷键既是删除, 也是剪切. 删除内容放入剪切板, 如果不粘贴就是删除, 如果是粘贴就是剪切. 粘贴的方法如下:
p(小写): 粘贴到光标后
P(大写): 粘贴到光标前
3)从光标所在行删除到文件尾
dG: 从光标所在行删除到文件尾
"d"是删除行, "G"是文件尾, 连起来就是从光标所在行删除到文件尾.
2.2.3复制
yy: 复制单行
nyy: 复制多行
复制之后的粘贴, 依然可以使用p(小写)键或P(大写)键
2.2.4撤销
u: 撤销
ctrl + r: 反撤销
2.2.5替换
r: 替换光标所在处的字符
R: 从贯标所在处开始替换字符, 按ESC结束
r键替换单一字符, 不用进入输入模式, 实际使用时, 比进入输入模式删除后在修改, 要方便
2.2.6vim配置文件
这次末行模式参数设置, 多数需要在vim中才能生效
设置参数 | 含义 |
---|---|
:set nu :set nonu | 显示与取消行号 |
:syntax on :syntax off | 是否依照语法显示相关的颜色帮助. 在Vim中修改相关的配置文件或Shell脚本文件时, 默认会显示相应的颜色, 用来帮助排错. 如果觉得颜色产生了干扰, 可以取消此设置 |
:set hlsearch :set nohlsearch | 设置是否将查找的字符高亮显示. 默认时set hlsearch高亮显示 |
:set ruler :set noruler | 设置是否显示右下角的状态栏. 默认是set ruler显示 |
:set showmode :set noshowmode | 设置是否在左下角小时如"-INSERT-"之类的状态栏. 默认是set showmode |
:set list :set nolist | 设置是否显示隐藏字符(Tab键使用"^I"表示, 回车符使用"$"表示). 默认是nolist显示. 如果要使用set list显示隐藏字符, 类似"cat -A 文件名" |
vim支持更多的设置参数, 可以通过":set all"进行查看
大家会发现, 这些设置参数都只是临时生效, 一点关闭文件再打开, 又需要重新输入. 如果想要永久生效, 需要手工建立vim的配置文件"~/.vimrc", 把你需要的参数写入配置文件中就可以永久生效了
补充: Windows下回车符在Linux中是用"^M$"符号显示, 而不是"$"符. 这回导致Windows下编辑的程序脚本, 无法在Linux中执行. 这时可以通过命令"dos2unix", 把Windows格式转化尾Linux格式, 当然反过来"unix2dos"命令就是把Linux格式转化为Windows格式. 这两个命令都需要手工安装
2.2.7查找
/查找内容: 从光标所在行向下查找
?查找内容: 从光标所在行向上搜索
n: 下一个
N: 上一个
2.2.8替换
:1, 10s/old/new/g 替换1到10行所有old为new
:%s/old/new/g 替换整个文件的old为new
3.vim使用技巧
3.1在vim中导入其他文件内容或命令
3.1.1导入其他文件内容
:r 文件名 把文件内容导入光标位置
可以把其他文件的内容导入光标所在位置
3.1.2在vim中执行系统命令
:!命令 在vim中执行系统命令
这里只是在vim中执行系统命令, 但并不把系统命令的结果写入文件中. 主要用于文件编辑中, 查看系统信息
3.1.3导入命令结果
:r !命令 在vim中执行系统命令, 并把命令结果导入光标所在行
在vim中执行系统命令, 并把命令结果导入光标所在行
3.2设定快捷键
:map 快捷键 快捷键执行的命令 自定义快捷键
vim允许自定义快捷键, 常用的自定义快捷键如下:
:map ^P I#<ESC> 按"ctrl+p"时, 在行首加入注释
:map ^B ^x 按住"ctrl+b", 删除行首第一个字母(删除注释)
注意: ^P快捷键不能手动输入, 需要执行ctrl + V + P来定义, 或者ctrl + V, 然后ctrl + P, ^B快捷键同理
3.3字符替换
:ab 源字符 替换为字符 字符替换
在vim编辑器中, 有时候需要频繁输入某一个长字符串(比如邮箱), 这时使用字符替换, 能增加输入效率, 例如:
:ab mymail songzhenxing@582.com
当需要输入邮箱时, 我们输入mymail + 空格, 就可以替换成邮箱
注意: "源自符"不应设置的太短, 这样可能影响正常使用
3.4多文件打开
在vim中可以同时打开两个文件, 只要执行如下命令:
vim -o 文件名1 文件名2
vim -O 文件名1 文件名2
# -o(小写): 上下分屏打开两个文件
# -O(大写): 会左右分屏打开两个文件
ctrl+w, 然后上下箭头, 或者左右箭头进行不同文件的切换