文章目录
前言
在编程世界中,编辑器的选择可以极大地影响开发者的编码效率。Vim,这款古老而强大的文本编辑器,以其独特的编辑模式和高度可定制性,赢得了无数程序员的青睐。本文旨在为Vim新手和有经验的用户汇总常用的方法和进阶配置,助你提升编辑效率
。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Vim 使用技巧
对于新手来说,Vim 可能看起来既复杂又难以驾驭,这主要是因为它拥有多种操作模式,并且需要依赖复杂的键盘快捷键,这些都可能让初学者感到困难。然而,一旦掌握了 Vim 的基础操作,你将不可避免地被它的强大和灵活性所吸引,同时你的工作效能也将迎来显著的提升,以下是 Vim 的多种常用快捷键,希望能够帮助到大家。
Vim的设计理念之一是“双手不用离开键盘
”,这一点在高效编辑技巧中体现得淋漓尽致。从快速移动光标到复杂文本操作,每一个动作都经过精心设计,以减少不必要的运动。
1、移动光标
在启动Vim之后,你首先会进入普通模式,这是进行诸如光标移动、复制粘贴等基本编辑操作的地方。此时,你可以按照特定的键盘布局执行操作,如下:
k
↑
\uparrow
↑
h
←
\leftarrow
←
→
\rightarrow
→ l
↓
\downarrow
↓
j
h
--向左移动光标l
--向右移动光标 // 这两个的操作是十分容易记住的j
--向上移动光标k
--向下移动光标 // 这里的技巧是可以想象j
的突起是朝下的,表示光标向下移动
2.、复制粘贴
yy(复制当前行)
p (粘贴到当前行下面)
P (粘贴到当前行上面)
3、可视域操作
v (指定选择的开始,使用方向键或hlkj导航键指定结束位置)
y (复制被选中部分文本)
p (粘贴)
4、删除操作
dd(删除当前行)
x (删除光标后的字符)
s (删除当前光标字符并编辑)
C (删除当前光标之后的字符并编辑, 本人用的较多,非常好用)
5、撤销
u (撤销上一步操作)
R (撤销上一步操作)
Crtl + r (重放,即撤销撤销的撤销)
6、跳转
gg (跳至文件首行)
G (跳至文件末行)
7、末行模式
:w (保存)
:q (退出)
:e (打开文件,后接文件路径)
:h (帮助)
:w (退出不保存)
:q (退出并保存)
:ZZ (快速保存退出)
:2,5s/old/new/g
// 匹配行数, 用
new
字符替换2-5行范围内的old
字符替换,%s
为匹配所有行,g
为一行所有匹配项。
Tips: 所有的大写字母用 shift + 小写 操作起来会更方便。
二、Vim 常用配置
要让Vim更贴合你的工作习惯,就需要通过.vimrc文件进行个性化设置。无论是调整视觉风格
,还是优化编辑体验
,这个小小的配置文件都有巨大的能量,常用配置项如下:
1、常用配置项
配置项 | 作用 |
---|---|
set ai / noai | 开启/关闭 自动缩进 |
set nu / nonu | 开关/关闭 行号显示 (number 缩写) |
set ts = 4 | 设置 Tab 缩进为 4 个字符 |
set sw = 2 | 设置缩进 4 个字符 (与 ai不同, 末行模式下输入">>"生效), yaml 书写必备 |
set paste | 保留原格式复制 |
set cursorline | 开启当前行参考线 |
set cursorcolum | 开启高亮列显示,有助于 yaml 等文本编辑 |
set et | 将输入的 TAB 展开为空格字符,yaml 语法规则明确不支持 tab 制表符 |
2、全局配置项
Vim 的全局配置项位于 /etc/vimrc
, 其中的配置会影响全局用户,set 的配置项可以在 Vim 文本编辑中的末行模式下临时生效,想要永久生效则写入配置文件中。
3、特定后缀文件格式配置
用户个人配置位于家目录下的隐藏文件 ~/.vimrc
, 一般不存在需手动创建,其中的配置只对个人用户生效。Vim 还支持对特定后缀的文件单独生效新的配置 (在原来全局配置的基础上),如下示例:
这段代码是Vim编辑器中的自动命令(autocmd)
,用于在打开或切换到yaml文件时自动设置一些选项。具体解释如下:
autocmd: 表示这是一个自动命令,用于在特定事件发生时自动执行一些操作。
FileType yaml: 表示这个自动命令仅在文件类型为 yaml 时生效。
setlocal: 表示这些设置仅对当前窗口有效,不会影响其他窗口。
et: 表示扩展制表符,即使用空格代替制表符进行缩进。
触发的功能是当打开一个 yaml 时,自动执行后续命令,设置当前窗口配置为自动缩进、显示行号、转换 tab 制表符为空格、设置 tab 缩进为 2个字符,换行后每行缩进为 2个字符等,这对于 ansible 自动化的剧本编写很有帮助,可以提高 yaml 格式类文本的编辑效率。
三、Ansible 高效运维
当进行 yaml 一系列剧本编写时,你是不是还是在手动的复制贴贴模板,其实还有高效
的方法,Vim 除了基本的文本编辑功能,还提供了许多高级功能
,如事件、宏录制、多窗口编辑等,其中的事件
能更好的帮助我们编写模板。
下面请看一组示例:
[root@test ~]# vim test.yml
---
- name:
hosts:
remote_user: root
become: yes
vars:
roles:
tasks:
- name:
# - block:
#
# rescue:
#
# always:
#
# handlers:
# - name:
"/usr/share/vim/vimfiles/template.yml" 20L, 162C
从中我们可以看出,当我新打开一个 yml 文件,它已经提前填充上了模板内容,这是如何做到的?
其实通过添加 Vim 配置就能达到这样的效果,让我们打开 /etc/vimrc
配置文件,添加以下代码:
[root@test ~]# vim /etc/vimrc
26 autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
27 " start with spec file template
28 autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
可以看到这里出现了一行 autocmd 自动命令事件,我们复制一行进行如下修改:
29 autocmd BufNewFile *.yml,*.yaml 0r /usr/share/vim/vimfiles/template.yml
其中
autocmd
表示这是一个自动命令。
BufNewFile *.yml,*.yaml
表示当创建一个新文件,且扩展名为 .yml 或 .yaml 时,触发这个自动命令。
0r /usr/share/vim/vimfiles/template.yml
表示读取(read)并插入位于该默认路径
下的模板文件。其中,0r 表示在当前光标位置插入文件内容。
通过以上配置可以配置多个不同文件后缀的模板,可以帮助我们进行更好的文本编写,如 Shell 脚本的个人信息头等,大家还能想到什么用法呢?欢迎评论区留言互相学习 (*^▽^*) ~