vim 技巧 2023-08-21 · 发布于
博客 · 2099 字 · 5 分钟 vim vim是一个常用的文本编辑工具,在远程服务器中更改系统配置中经常使用。
基础
vim的模式
Vim一般分为三种不同的模式,普通模式( normal mode )、编辑模式和命令模式.
普通模式( normal mode ) 使用vim打开文件则进入普通模式。在普通模式下可通过按键 h、j、k、l来控制光标的移动,通过 x、d(delete) 、 y(yank) 、p(put)等按键可对文本进行操作,在该模式下,键盘按键被视为类似 Word下的快捷键的功能,而不是被视为简单的文本输入。
编辑模式 在编辑模式下可对文件内容进行编辑。编辑模式下按键输入均被视为文本输入,而不再具备普通模式下的各种功能。用户可以通过按键ESC从编辑模式返回普通模式。
命令模式 在普通模式下,键盘输入 ’ : ‘、 ’ / ‘、 ’ ? ‘则光标移动至界面最下行,并等待进一步输入。之后Vim会根据用户输入执行相应的动作,如保存和退出、查找和替换、执行外部命令等。命令模式下同样通过ESC键返回普通模式。
普通模式下的操作文件。
vim filename // 打开名为filename的文件
: w // 保存修改至源文件
: wq // 保存修改并退出
: q ! // 不保存修改 , 直接退出
: w filename // 保存修改 ( 选中的部分 ) 至filename ( 其中filename为不存在重名的新文件 ) 进入编辑模式 常用小写的i和o即可,i代表当行这个光标位插入,o代表下一行插入。
i // insert即插入模式 , 从光标所在位置开始插入 , 即插入的内容位于原光标所在位置字符之前
I // 从光标所在行的行首开始插入
a // append即附加模式 , 从光标所在位置之后附加 , 即新增内容位于原光标所在位置字符之后
A // 从光标所在行的行末开始附加
o // 在光标所在行的下一行加入新一行
O // 在光标所在行的上一行加入新一行
R // 进入替换模式 , 屏幕下方会出现Replace提示 , 此时的输入会直接替换光标所在位置的字符 , 与Windows下的 0 作用类似 , 同样通过ESC键返回 删除操作 在普通模式下使用dd命令即可删除当行
x // 删除光标所在处的字符 ( 其大写形式X为将光标之前的字符删除 , 相当于Backspace )
dd // 删除光标所在行的操作 ( 常用 )
dw // 删除一个单词
d3w // 删除三个单词
d $ // 删除光标所在处至行尾的字符
d4l // 删除光标所在处起的四个字符
d2j // 删除两行 同样的,如 2dd 指令则表示将dd指令重复两次,即为删除两行操作,2d2w 则表示将 d2w 操作执行两次,即删除四个单词。
复制与粘贴 复制即通过 v 指令选定文本段,通过 y 指令复制内容,再通过 p 指令将文本放置在指定位置;剪切即通过 v 指令选定文本段,通过 d (或 x )指令删除内容,再通过 p 指令将文本放置在指定的位置; p 指令除了用于复制内容的粘贴外,还可以将上一次删除的内容粘贴在指定的位置,故而可以达到类似剪切的效果。对于 v 指令选中的文本,可以进行多种操作,包括复制(y)、删除(x/d)、另存(:w filename)等,读者完全可以自行进行组合尝试。指令y和d的指令形式有许多相同之处,除了均有yy和dd这种针对一行内容的处理指令外,指令y可以与光标移动指令相结合,得到更好的使用效果。
p // put命令 , 将剪贴的内容 ( 注意 , 既可以是复制的内容 , 也可以为之前删除的内容 ) 放置在光标后的位置 , 其大小字母P则表示放置在光标之前的位置
v // 进入虚拟选择模式 ( visual selection ) , 被选择的文本段被高亮显示 ( v的选择对象为字符 , 对应的大写字母V则是以行为单位选择 )
Ctrl + v // 以矩形框的形式进行内容选择
y // 复制通过 v 操作选择的文本 , 或则其本身也可以与光标移动指令一同使用
y5w // 如y5w , 则复制5个单词 ( 注意复制是从光标所在处开始的 )
yy // 复制光标所在行的内容
y0 // 复制光标所在位置至行首的内容
y $ // 复制光标所在位置至行尾的内容
yG // 复制光标所在位置至文本结束的内容
ynG // 复制指令与nG指令的结合
// 以及诸如y3w 、 y3j等指令 行跳转
gg // 跳转至文件第一行
G // 跳转至文件最后行
nG // 跳转至文件第 n 行 撤销
u // 撤销上一次操作
U // 撤销对光标所在行的所有操作
Ctrl + r // 重做上一操作 查找
/ keyword // 按默认方向查找关键字
? keyword // 按与默认方向相反的方向查找关键字
n // 按与之前相同的查找顺序匹配下一个出现相同关键字的位置
N // 按与之前相反的查找顺序匹配下一个出现相同关键字的位置
// 用户也可以通过Ctrl + o 和 Ctrl + i 进行位置的切换
替换
: s / old / new // 将光标所在行出现的第一个old替换为new ( 仅对该行的第一个old )
: s / old / new / g // 将光标所在行出现的所有old替换为new
: s / old / new / gc // 同上 , 替换之前提示用户确认是否替换
: n , ms / old / new / g // 在n和m指定的行之间进行检查和替换
: % s / old / new / g // 针对整个文本进行替换 修改编辑选项 修改 ~/.vimrc 文件
: set nu // 显示行号 , 相应的set nonu则为不显示行号
: set ic // 搜索忽略大小写 ( ignore case ), 取消即为 set noic
: set hlsearch // 搜索时匹配的结果高亮显示
: set incserch // 设置搜索时的搜索顺序
// 可以看到 , 在对应的选项前面加入前缀no即表示取消取消对应的选项
: set ruler // 右下角展示状态栏
: set // 显示与系统默认设置不同的参数情况 , 即被修改过的参数情况
: set syntax on // 设置Vim会根据语法以不同颜色显示不同的内容
: set syntax off