共计 3135 个字符,预计需要花费 8 分钟才能阅读完成。
导读 | 今天来介绍以下 linux 下 vim 的使用以及高效率的技巧 |
目录
一. 关于 vim 编辑器
Vim 是一个类似于 Vi 的著名的功能强大、高度可定制的文本编辑器,在 Vi 的基础上改进和增加了很多特性。VIM 是自由软件。vim 可以当作
vi 的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
[ | ]|
vim-enhanced-7.4.160-5.el7.x86_64 | |
[ | ]|
vim-minimal-7.4.160-2.el7.x86_64 |
# 从输出可以看到,vim 是 vi 的增加版,最明显的区别就是 vim 可以语法加亮,它完全兼容 vi
二.vim 编辑器的模式
1.vim 编辑器有三种模式,第一次进入是一般模式,左下角出现“Insert”是编辑模式,输入:是命令行模式。
从编辑模式到命令行模式怎样切换?编辑模式 ->esc-> 一般模式 ->: -> 命令模式
一般模式怎样进入编辑模式?按 a 或 i 或 o 或 A 或 I 或 O
image-20201010173449952 | |
image-20201010173559526 |
2. 总结:vim 如何进入其它模式?
a A o O i I 都是可以进行插入,编辑模式 | |
:进入命令行模式 | |
v 进入可视模式 | |
ctrl+v 进入可视块模式 | |
V 进入可视行模式 | |
R 擦除、改写,进入替换模式 | |
你进入以上模式后,想要退出,按 esc |
三. 一般模式下的基础操作
i 当前字符之前插入 (光标前)
I 行首插入 (行首) | |
a 当前字符之后插入 (光标后) | |
A 行尾插入 (行尾) | |
o 下一行插入 (另起一行) | |
O 上一行插入 (上一行插入) | |
x 向后删除一个字符 等同于 delete | |
X 向前删除一个字符 | |
u 撤销一步 每按一次就撤销一次 | |
r 替换,"r" 命令不是一个操作符命令。它等待你键入下一个字符用以替换当前光标下的那个字符。"r" 命令前辍以一个命令记数是将多个字符都替换为即将输入的那个字符。要把一个字符替换为一个换行符使用 "r"。它会删除一个字符并插入一个换行符。在此处使用命令记数只会删除指定个数的字符:"4r" 将把 4 个字符替换为一个换行符。 |
# 光标定位
hjkl 左下上右 | |
0 和 home 键表示切换到行首,$ 和 end 键表示切换到行尾 | |
gg 快速定位到文档的首行 , G 定位到未行 | |
3gg 或者 3G 快速定位到第 3 行 | |
/string(字符串) ----- 找到或定位你要找的单词或内容,如果相符内容比较多,我们可以通过 N、n 来进行向上向下查找,并且 vi 会对查找到的内容进行高亮显示,取消用 :noh | |
/^d ----^ 意思表示以什么开头,,查找以字母 d 开头的内容 | |
/t$ -----$ 意思表示以什么结尾,,查找以字母 t 结尾的内容 | |
vim + a.txt 打开文件后,光标会自动位于文件的最后一行 |
# 对文本进行编辑操作
# 删除、复制、粘贴、撤销 | |
y 复制(以字符为单位):表示对单个字符进行复制,如果要复制整行,用 yy(以行为单位),"y" 操作符命令会把文本复制到一个寄存器 3 中。然后可以用 "p" 命令把它取回。因为 "y" 是一个操作符命令,所以你可以用 "yw" 来复制一个 word. 同样可以使用命令记数。如下例中用 "y2w" 命令复制两个 word,"yy" 命令复制一整行,"Y" 也是复制整行的内容,复制当前光标至行尾的命令是 "y$"。复制 N 行:Nyy,比如:2yy,表示复制 2 行 | |
dd(删除,以行为单位,删除当前光标所在行)删除 N 行:Ndd,比如:2dd,表示删除 2 行 | |
p:P 粘贴 | |
剪切:dd | |
x 删除光标所在位置的字符 | |
D 从光标处删除到行尾 | |
u 撤销操作 | |
ctrl+r 还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样 | |
r 替换,或者说用来修改一个字符,"r" 命令不是一个操作符命令。它等待你键入下一个字符用以替换当前光标下的那个字符。"r" 命令前辍以一个命令记数是将多个字符都替换为即将输入的那个字符。要把一个字符替换为一个换行符使用 "r"。它会删除一个字符并插入一个换行符。在此处使用命令记数只会删除指定个数的字符:"4r" 将把 4 个字符替换为一个换行符。 |
四.V 模式(列模式)的基础操作
1. 进入 v 模式 移动光标选择区域,编程的时候进行多行注释的步骤:
ctrl+v 进入列编辑模式 | |
向下或向上移动光标,把需要注释、编辑的行的开头选中起来 | |
如果需要删除的话,就直接输入 x 键进行删除 | |
如果要添加内容,就按大写的 I | |
再插入注释符或者你需要插入的符号, 比如 "#" | |
再按 Esc, 就会全部注释或添加了 |
2. 删除:再按 ctrl+v 进入列编辑模式;向下或向上移动光标;选中注释部分, 然后按 d, 就会删除注释符号。
五. 命令模式下的基础操作
:w 保存 save | |
:w! 强制保存 | |
:q 没有进行任何修改,退出 quit | |
:q! 修改了,不保存,强制退出 | |
:wq 保存并退出 | |
:wq! 强制保存并退出 | |
:x 保存退出 |
# 调用外部文件或命令
假设: 我想要写入我的网卡 MAC 地址, 我要查看一下, 当前在 vim 编辑文档, 照着写。这样好麻烦。
在命令行模式下操作:
:!ifconfig 调用系统命令 | |
!+ 命令 | |
读取其他文件。(把其他文件中的内容追加到当前文档中):r /etc/hosts |
# 文本替换
# 格式: 范围 (其中 % 所有内容) s 分隔符 旧的内容 分隔符 新的内容 (分隔符可以自定义) | |
#默认是每一行的第一个符合要求的词 (/ g 全部) | |
:1,3 s/bin/xuegod #替换第 1 到 3 行中出现的第一个 bin 进行替换为 xuegod | |
:1,3 s/bin/xuegod/g #替换第 1 到 3 行中查找到所有的 bin 进行替换为 xuegod | |
:3 s/xue/aaaaa #只把第 3 行中内容替换了 | |
:% s/do/xuegod/g #将文本中所有的 do 替换成 xuegod | |
:% s/do/xuegod/gi #将文本中所有的 do 替换成 xuegod, 并且忽略 do 的大小写 | |
:% s@a@b@g #将文本中所有的 a 替换成 b |
六. 自定义 vim 环境
可以根据自己的喜好自定义 vim 环境。
# 临时设置 vim 环境
:set nu #设置行号 | |
:set nonu #取消设置行号 | |
:noh #取消高亮显示 |
# 永久设置 vim 环境
[ | ]|
[ | ]|
例:[root@node5 ~] | |
set nu |
七.vim 同时打开多个文件
1. 以上下形式,打开两个文档,使用 ctrl+ww 在两文档之间进行切换编辑
# 小写的 o 上下分屏
[root@node5 ~]#vim -o /etc/passwd /etc/hosts
2. 以左右方式打开两个文档,使用 ctrl+ww 在两文档之间进行切换编辑
# 大写 O 左右分屏
[root@node5 ~]#vim -O /etc/passwd /etc/hosts
八. 比较两个文件的内容
比较两个文件的内容有两种方法:diff 和 vimdiff。
[ | ]|
[ | ]|
[ | ]|
40a41 | |
> aaa |
[root@node5 ~]#vimdiff /etc/passwd mima.txt
致力于一条龙式的为您解决问题
正文完
星哥玩云-微信公众号
