Linux 使用 vim 编辑器
2023-11-28 本文已影响0人
暴躁程序员
一、vim 编辑器的使用
vim 纯文本编辑器,是 vi 编辑器的增强版,建议使用 vim
vim fileName // 有文件则进入,没有则创建文件进入
二、vim 三种模式
vim 的三种模式:命令模式、输入模式、编辑模式
- 命令模式
控制台输入:vim fileName ,默认进入命令模式,输入以下命令从命令模式进入输入模式
a // 光标所在字符后插入(追加)
A // 光标所在行尾处插入
i // 光标所在字符前插入(插入)
I // 光标所在行首处插入
o // 光标下插入新行(新行)
O // 光标上插入新行
- 输入模式
在输入模式下,可执行录入文本等操作,按 ESC 键,从输入模式进入命令模式
- 编辑模式
在命令模式下,输入英文冒号:
进入编辑模式,编辑模式下的常见命令如下:
w // 保存不退出
q // 退出不保存
wq // 保存并退出(快捷键 shift+zz)
q! // 强制退出不保存 (用于修改数据后,强制不保存退出)(所有人)
wq! // 强制保存并退出 (用于文件没有写权限的时候,修改后,保存退出)(管理员和文件当前所属者)
三、命令模式下的常见操作
注意:以下命令都是在命令模式下执行的,不可在插入模式下执行
- 控制移动光标
↑ ↓ ← → // 光标上下左右移动
gg // 光标移动到文件头
shift + g // 光标移动到文件尾
^ // 光标移动到行首
$ // 光标移动到行尾
:n // 移动到第几行
- 删除、剪切字符
x // 删除单个字母
nx // 删除n个字母
dd // 删除单行,或者剪切单行
ndd // 删除多行,或者剪切多行
:nl,n2d // 删除指定范围内的字符,或者剪切范围内字符
dG // 从光标所在行删除到行尾,放在行首就是清空文件
- 复制(整行)
yy // 复制光标所在行
nyy // 复制多行
- 粘贴(整行)
p // 粘贴到光标前
shift + p // 粘贴到光标后
- 撤销
u // 撤销
ctrl+r // 反撤销
- 查找
/查找内容 // 从光标所在处向下查找
?查找内容 // 从光标所在处向上查找
n // 下一个
shift + n // 上一个
- 替换
:1,100s/old/new/g // 替换第一行到第十行的所有old为new
:%s/old/new/g // 替换整个文件old为new
:1,10s/^/#/g // 注释1 ~ 10 行
:1,10s/^#//g // 取消1 ~ 10 行注释
四、vim 常见配置命令
临时修改 vim 编辑器的展示
:set nu // 显示行号
:set nonu // 取消行号
:syntax on // 显示特殊内容颜色
:syntax off // 不显示特殊内容颜色
五、vim 常见操作
- 把其他文件的内容导入到光标位置
在命令模式下,光标先放在要粘贴的位置,执行
:r /xxx/xxx/文件名 // 把文件内容导入到光标位置
- 在 vim 中执行系统命令,且不影响 vim 操作
在 insert 编辑模式下,输入
:!系统命令 // 比如,:!date, 在vim编辑器中,使用系统命令,并按任意键返回到vim编辑器中
- 将系统命令的结果导入到 vim 编辑器中光标所在位置
:r !命令 // 比如,:r !date ,将系统时间写入到光标所在位置
- 注释快捷键设置
在命令行配置只是临时生效,系统重启将失效,永久生效需要写入配置文件:~/.vimvc 5.
// 自定义快捷键语法::map 快捷键 快捷键执行的命令
:map ctrl+p I#<ESC> // 按ctrl+p时,在行首加上 # 注释
:map ctrl+b ctrl+x // 按ctrl+b时,删除行首第一个字母,取消注释
- 字符串模板
可以把一些常用的长字符串设置成模板,方便编辑时使用,用于提升编辑效率,比如:邮箱
:ab 源字符 替换为字符 // 字符替换
:ab myemail 872831515@qq.com // 当在文档中插入 myemail 时,会自动转化为 872831515@qq.com,建议源字符特殊且长一些否则影响编辑
- 多文件打开
在vim中可同时打开多个文件
vim -o /xxx/file1 /xxx/file2 // 小写的o,上下分屏打开两个文件,按ctrl + w 上下箭头进行文件切换
vim -O /xxx/file1 /xxx/file2 // 大写的O,左右分屏打开两个文件,按ctrl + w 左右箭头进行文件切换
六、注意
- 当vim编辑器执行的过程中意外关闭了文件,会生成对应文件的.swp文件,再次进入时显示文件已经打开,原因是服务器备份了之前修改的文件
// 解决方式一: 覆盖文件
vim -r 文件名
// 解决方式二:查看并删除swp文件
ls -la
rm -rf .文件名.swp
- 所有命令必须在英文键盘下输入才生效