vim是全屏幕纯屏幕纯文本编辑器, 是vi编辑器的增强版. 可以利用别名让输入vi命令时, 实际上执行vim编辑器, 例如:
alias vi = "vim"? ?
#定义别名
这样定义的别名是临时生效, 如果需要永久生效, 请放入环境变量配置文件(~/.bashrc)
vim工作在三种模式之下:
命令模式: 主要使用快捷键的模式, 是学习的重点, 命令模式想要进入输入模式, 可以使用以下方法:
命令 | 作用 |
---|---|
a | 在光标所在字符后插入, 可以理解为追加 |
A | 在光标所在行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
输入模式: 主要用于文本编辑, 和记事本类似, 输入数据就好
末行模式(编辑模式):
:w? ? 保存不退出
? ? ? ? :w 新文件名? 把文件另存为新文件
:q? ? ?不保存退出
:wq? 保存退出
:!? ? ? 强制
? ? ? ? :q!? ? ? 强制不保存退出, 用于修改文件后, 不保存数据退出
? ? ? ? :wq!? ?强制保存退出, 当文件的所有者或者root用户, 对文件没有写权限的时候, 强制写入数据使用
1)上下左右移动光标
方法一: 上下左右方向键
方法二: h, j, k, l(左, 下, 上, 右)
2)把光标移动到文件头或尾
gg: 移动到文件头
G: 移动到文件尾
3)移动到行首或行尾
^: 移动到行首
$: 移动到行尾
4)移动到指定行
:n 数字: 移动到第几行
1)删除字母
x: 删除单个字母
nx: 删除那个字母
n是数字, 如果打算从光标位置删除连续的10个字母, 可以使用"10x", 删除字母并不符合使用的习惯, 更多的是在编辑模式下, 使用Backspace删除字母
2)删除整行或剪切
dd: 删除单行
ndd: 删除多行
:n1, n2d? ? ? 删除指定范围的行
删除整行或者多行, 这是我们常见的删除方式, 这里的dd快捷键既是删除, 也是剪切. 删除内容放入剪切板, 如果不粘贴就是删除, 如果是粘贴就是剪切. 粘贴的方法如下:
p(小写): 粘贴到光标后
P(大写): 粘贴到光标前
3)从光标所在行删除到文件尾
dG: 从光标所在行删除到文件尾
"d"是删除行, "G"是文件尾, 连起来就是从光标所在行删除到文件尾.?
yy: 复制单行
nyy: 复制多行
复制之后的粘贴, 依然可以使用p(小写)键或P(大写)键
u: 撤销
ctrl + r: 反撤销
r: 替换光标所在处的字符
R: 从贯标所在处开始替换字符, 按ESC结束
r键替换单一字符, 不用进入输入模式, 实际使用时, 比进入输入模式删除后在修改, 要方便
这次末行模式参数设置, 多数需要在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格式. 这两个命令都需要手工安装
/查找内容: 从光标所在行向下查找
?查找内容: 从光标所在行向上搜索
n: 下一个
N: 上一个
:1, 10s/old/new/g? ? ? ? ? 替换1到10行所有old为new
:%s/old/new/g? ? ? ? ? ? ? ?替换整个文件的old为new
:r 文件名? ? ? ? ? 把文件内容导入光标位置
可以把其他文件的内容导入光标所在位置
:!命令? ? ? ? ? ? 在vim中执行系统命令
这里只是在vim中执行系统命令, 但并不把系统命令的结果写入文件中. 主要用于文件编辑中, 查看系统信息
:r !命令? ? ? ? 在vim中执行系统命令, 并把命令结果导入光标所在行
在vim中执行系统命令, 并把命令结果导入光标所在行
:map 快捷键 快捷键执行的命令? ? ? ? ? ? ? ? ? ?自定义快捷键
vim允许自定义快捷键, 常用的自定义快捷键如下:?
:map ^P?I#<ESC>? ? ? ? 按"ctrl+p"时, 在行首加入注释
:map ^B ^x? ? ? ? ? ? ? ? ? ?按住"ctrl+b", 删除行首第一个字母(删除注释)
注意: ^P快捷键不能手动输入, 需要执行ctrl + V + P来定义, 或者ctrl + V, 然后ctrl + P, ^B快捷键同理
:ab 源字符 替换为字符? ? ? ? ? ? ? ? ? ? ? 字符替换
在vim编辑器中, 有时候需要频繁输入某一个长字符串(比如邮箱), 这时使用字符替换, 能增加输入效率, 例如:
:ab mymail songzhenxing@582.com
当需要输入邮箱时, 我们输入mymail + 空格, 就可以替换成邮箱
注意: "源自符"不应设置的太短, 这样可能影响正常使用
在vim中可以同时打开两个文件, 只要执行如下命令:
vim -o 文件名1 文件名2
vim -O 文件名1 文件名2
# -o(小写): 上下分屏打开两个文件
# -O(大写): 会左右分屏打开两个文件
ctrl+w, 然后上下箭头, 或者左右箭头进行不同文件的切换