vim基本使用——《Linux日常》

1. 介绍

  • vim是一个功能很完善的多模式编辑器,包括三种:普通模式、插入模式、命令行模式
  • 以命令为中心,使用少量命令执行复杂的文本相关任务
  • 内存占用很小
  • 具有高度可配置性,并使用简单的文本文件来存储其配置

vim的操作非常多,本文只是列举了日常使用中常见的操作。

2. 启动

命令说明
vim直接进入
vim filename打开或新建文件filename
vim +n filename打开文件filename,并将光标置于第n行首
vim + filename打开文件filename,并将光标置于最后一行
vim + /pattern filename打开文件filename,并将光标置于第一个于pattern匹配串的位置
vim -r filename恢复上次异常退出的文件filename
vim -y n filename打开文件filename,并将编辑窗口的大小设为n行
vim -R filename以只读的方式打开文件filename,但可以强制保存
vim -M filename以只读的方式打开文件filename,不可以强制保存
vim -c com filename在打开文件filename前,先执行指定的命令com

vim的启动方式很多,根据需求选择。

3. 基本使用

vim编辑器有三个模式:普通模式、插入模式、命令行模式。

  • 普通模式:可以进入插入模式和命令行模式
  • 插入模式:对文件进行修改
  • 命令行模式:执行命令行命令

三种模式的转换:
vim编辑器模式转换

3.1 文档操作

**命令 **功能
:q退出vim编辑器,如果对当前文件的修改未保存,vim会警告
:w保存文件
:!强制执行
:q!强制退出,不保存
:wq保存并退出
ZZ保存并退出
:x保存并退出
:e file关闭当前编辑的文件,并开启新的文件,如果对当前文件的修改未保存,vim会警告
:e! file放弃对当前文件的修改,编辑新的文件
:e# 或 ctrl+^回到刚才编辑的文件
f 或 ctrl+g显示文档名,是否修改,和光标位置
:f filename改变编辑的文件名,这时再保存相当于另存为
:saveas newfilename另存为
:Sex水平分割一个窗口,浏览文件系统
:Vex垂直分割一个窗口,浏览文件系统

3.2 光标移动

3.2.1 基本移动

下面的操作,可以搭配n使用,普通模式下输入3l,光标向右移动3个字符

命令功能
h 或 退格(BackSpace)光标左移一个字符
l 或 空格(Space)光标右移一个字符
k光标上移一行(段间)
j光标下移一行(段间)
gk光标上移一行(段内)
gj光标下移一行(段内)
+ 或 回车(Enter)光标移至下一行的第一个非空白字符
-光标移至上一行的第一个非空白字符
w光标移至下一个单词的开头
W光标移至下一个单词的开头,忽略(跳过)标点
e光标移至下一个单词的末尾
E光标移至下一个单词的末尾,忽略(跳过)标点
b光标移至上一个单词的开头
B光标移至上一个单词的开头,忽略(跳过)标点
ge光标移至上一个单词的末尾
gE光标移至上一个单词的末尾,忽略(跳过)标点
(光标移至上一句
)光标移至下一句
{光标移至上一段
}光标移至下一段
fc光标移至同一行下一个字符c处,c是任意字符
Fc光标移至同一行上一个字符c处,c是任意字符
;配合f & t使用,重复一次上一次的光标移动
,配合f & t使用,反向重复一次上一次的光标移动
0光标移至同一行的开头
^光标移至同一行的第一个非空字符
$光标移至同一行的末尾
nG光标移至第n行的开头
n|光标移至第n列的开头
gg光标移至第一行的开头
G光标移至最后一行的开头

3.2.2 翻屏

命令功能
ctrl+f下翻一屏
ctrl+b上翻一屏
ctrl+d下翻半屏
ctrl+u上翻半屏
ctrl+e向下滚动一行
ctrl+y向上滚动一行
n%到文件n%的位置
zz将当前行移动到屏幕中央
zt将当前行移动到屏幕顶端
zb将当前行移动到屏幕底端

3.2.3 标记

使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+oCtrl+i 很像浏览器上的前进后退

命令功能
m{a-z}标记光标所在位置,局部标记,只用于当前文件
m{A-Z}标记光标所在位置,全局标记,标记之后,退出Vim, 重新启动,标记仍然有效
`{a-z}移动到标记位置
'{a-z}移动到标记位置的行首
``移动到上次编辑的位置
‘’移动到上次编辑的位置所在的行
`"移动到上次离开的地方
`.移动到最后改动的地方
:marks显示所有标记
:delmarks a b删除标记a和b
:delmarks a c-f删除标记a、c、d、e、f
:delmarks!删除所有标记
:help mark-motions查看mark帮助文档

3.3 插入文本

小技巧:nina进入插入模式输入一个字符c,再按Esc退出插入模式,会自动补全成n个字符c,用于快速输入分割线

命令功能
i光标前插入
I当前行第一个非空字符前插入
gI当前行第一列插入
a光标后插入
A当前行最后插入
o当前行后面新建一行插入
O当前行前面新建一行插入

3.4 复制、剪切、粘贴

3.4.1 复制

命令功能
y复制在可视化模式下选中的文本
yy or Y复制整行文本
y[n]w复制n个词,默认为1
y[n]l复制光标右边n个字符,默认为1
y[n]h复制光标左边n个字符,默认为1
y0从光标当前位置复制到行首
y$从光标当前位置复制到行尾
:m,n co km~n行的内容复制粘贴到k行之后(k+1行)

3.4.2 剪切

命令功能
d剪切(删除)在可视化模式下选中的文本
d$ or D剪切(删除)当前位置到行尾的内容
d[n]w剪切(删除)n个词,默认为1
d[n]l剪切(删除)光标右边n个字符,默认为1
d[n]h剪切(删除)光标左边n个字符,默认为1
d0剪切(删除)当前位置到行首的内容
[n]dd剪切(删除)从当前位置向后的n行,默认为1

3.4.3 粘贴

命令功能
p光标之后粘贴
P光标之前粘贴

3.5 查找和替换

3.5.1 查找

命令功能
/pattern光标后面的文本中查找包含pattern的内容
?pattern光标前面的文本中查找包含pattern的内容
n向后查找下一个
N向前查找下一个

3.5.2 替换

命令功能
😒/old/new用new替换当前行的第一个old
😒/old/new/g用new替换当前行的所有old
:n1,n2 s/old/new/g用new替换n1~n2行的所有old
:% s/old/new/g用new替换当前文件所有的old
:% s/^/new/g^表示行首,将行首替换为new,即在每一行的行首插入new
:% s/$/new/g$表示行尾,将行尾替换为new,即在每一行的行尾插入new
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值