Liunx 学习笔记(二):vim 的使用

本篇是 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 操作模式转换图

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.
亲!!! 听说给作者打赏一杯咖啡钱,会给自己带来好运哦!