Liunx 学习笔记(二)vim 的使用
大约 5 分钟
前言
本篇是 Liunx 的学习笔记系列第二篇, 这一篇将介绍 vim 的使用技巧。vim 是一款终端编辑器, 是由 vi 演变而来的, 它与 vi 最大的区别是, vim 拥有代码高亮, 其他操作都是共用的。
vim 常用操作
打开文件操作
命令 | 作用 |
---|---|
vi | 进入 vi 而不读入任何文件 |
vi [fileName] | 进入 vi 并读入指定名称的文件(新、旧文件均可)。 |
vi +n [fileName] | 进入 vi 并且由文件的第几行开始。 |
vi + [fileName] | 进入 vi 并且由文件的最后一行开始。 |
vi +/pattern [fileName] | 打开文件, 并将光标置于第一个与 pattern 匹配的串处 |
vi [fileName]....[fileName] | 打开多个文件, 依次进行编辑 |
vi -r [fileName] | 在上次正用 vi 编辑时发生系统崩溃, 恢复 [fileName] |
vimdiff fileA fileB | 比较编辑两个不同的文件 |
vim 操作模式转换图
插入命令
命令 | 作用 |
---|---|
a | 在光标所在行行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
定位命令
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G | 到最后一行 |
nG | 到第 n 行 |
:n | 到第 n 行 |
$ | 光标移至行尾 |
0 | 光标移至行首 |
删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后 n 个字符 |
dd | 删除光标所在行 |
ndd | 删除 n 行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处至行尾内容 |
:n1, n2d | 删除第 n1 行到第 n2 行 |
复制和剪切命令
命令 | 作用 |
---|---|
yy | 复制当前行 |
nyy | 复制当前行(包含当前行)以下 n 行 |
dd | 剪切当前行 |
ndd | 剪切当前行(包含当前行)以下 n 行 |
p | 粘贴在当前光标所在行的下一行 |
P | 粘贴在当前光标所在行的上一行 |
nyl | 复制 n 个字符 |
yw | 复制一个单词 |
y$ | 复制从当前位置到行尾 |
yG | 复制从所在行到最后一行 |
:n1, n2 co n3 | 将 n1 行到 n2 行之间的内容拷贝到第 n3+1 行【n3 行的下一行】 |
:n1, n2 m n3 | 将 n1 行到 n2 行之间的内容移至到第 n3 行下 |
J | 把下一行的数据连接到本行之后 |
替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符, 按 Esc 结束 |
u | 取消上一步操作 |
搜索和搜索替换命令
命令 | 作用 |
---|---|
/string | 搜索指定字符串 |
:set ic | 搜索时忽略大小写 |
:set noic | 取消搜索时忽略大小写 |
n | 搜索指定字符串的下一个出现位置(即同方向) |
N | 在反方向上重复上一次搜索命令 |
:%s/old/new/g | 全文替换指定字符串;需要替换询问时, g 改成 c |
:n1, n2s/old/new/g | 在一定方位范围内替换指定字符串;需要替换询问时, g 改成 c |
保存和退出命令
命令 | 作用 |
---|---|
:w | 保存修改 |
:w /[path]/[fileName] | 另存为指定文件 |
:wq, :x | 保存修改并退出 |
ZZ | 快捷键, 保存修改并退出 |
:q! | 不保存修改并退出 |
:wq! | 保存修改并退出(文件所有者及 root 可使用, 通常在文件无写权限下使用) |
:n1, n2 w ! command | 将文件中 n1 行至 n2 行的内容作为 command 的输入并执行之, 若不指定 n1, n2, 则表示将整个文件内容作为 command 的输入【注意空格】例如 :1,4 w! grep tom |
:!command | 暂时退出 vi 并执行 shell 指令, 执行完毕后再回到 vi。【后期应该有用】 |
:r!command | 将命令 command 的输出结果放到当前行【强大】 |
:sh | 暂时退出 vi 到系统下, 结束时按 Ctrl + d 则回到 vi。 |
:e [fileName] | 打开文件 [fileName] 进行编辑【相当于退出当前的并打开另一个文件】 |
:e! | 放弃修改文件内容, 重新载入该文件编辑 |
:w !sudo tee % | 以普通用户身份打开的 vim , 修改后以 root 身份保存 |
vim 使用技巧
导入文件内容
:r /[path]/[fileName]
导入命令执行结果
:r !command
寻找命令所在目录
:!which command
定义快捷键
:map ^P I#<ESC> # 按 Ctrl+P 组合键用 # 注释当前行
:map ^B 0x # 按 Ctrl+B 组合键删除当前行的注释
:map ^H istring<ESC> # 按 Ctrl+H 组合键在光标所在位置插入字符串
提示
:map
定义快捷键时, 按 Ctrl+V+key 定义快捷键;:map
定义的快捷键, 重启或关机失效
连续行注释
:n1,n2s/^/#/g # 在 n1 行到 n2 行首添加注释 #
:n1,n2s/^#//g # 在 n1 行到 n2 行首删除注释 #
:n1,n2s/^/\/\//g # 在 n1 行到 n2 行首添加注释 //
:n1,n2s/^\/\//g # 在 n1 行到 n2 行首删除注释 //
替换
:ab string1 string2 # 输入 string1 将会被替换成 string2
编辑模式命令, 永久生效
普通
用户
vim /home/[userName]/.vimrc
root
用户
vim /root/.vimrc
添加类似于以下命令代码, 无需添加 :
set nu
map ^P I#<ESC>
ab test this is test,this is test,this is test.