首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vim实用指南(一)

vim实用指南(一)

作者头像
用户8639654
修改2021-08-19 18:06:45
修改2021-08-19 18:06:45
1.5K0
举报
文章被收录于专栏:云计算运维云计算运维

这是一篇不完全指南,但是绝对非常实用,熟练掌握后,可大大提高工作效率。

1. vim编辑器:

Vim是从 vi 发展出来的和 Emacs 并列成为类 Unix 系统用户最喜欢的编辑器。Vim 的可配置性非常强,各种插件、语法高亮配色方案等多不胜数,无论作为代码编辑器或是文稿撰写工具都非常给力。

1.1 Vim的几种模式:

1.1.1 命令模式(normal模式):

因为normal模式可以直接使用相关快捷键编辑文件,所以我更加喜欢叫它命令模式。命令模式分为一般命令模式和底部命令模式。通过vim打开一个文件,默认就是进入一般命令模式,可以输入:进入底部命令模式。

1.1.2 插入模式(insert模式):

可以输入文本,在一般命令模式下,按i、a、o等都可以进入插入模式。

1.1.3 可视模式(visual 模式):

在一般命令模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。

按V进入可视行模式, 总是整行整行的选中。

ctrl+v进入可视块模式。

代码语言:javascript
复制
viw  选中单词
vis  选中整段
vi(  选中括号内的所有字符

1.2 最常用的命令:

1.2.1 进入编辑模式:

代码语言:javascript
复制
a   在当前光标后面插入
A   在行尾插入
i   在当前光标插入
I   在行首插入
o   在下一行插入
O   在上一行插入
​
ciw     删除当前一个单词,并进入插入模式
ct"     删除双引号中间的内容,并进入插入模式
ctf     删除从当前位置到下一个f字符之间的字符,并进入插入模式

1.2.2 光标定位:

代码语言:javascript
复制
通过键盘[kjhl]或者上下左右键可以实现光标的上下左右移动;
​
w       前移一个单词,光标停在下一个单词开头;
e       前移一个单词,光标停在下一个单词末尾;
b       后移一个单词,光标停在上一个单词开头;
​
A|end|$   将光标定位到行尾;
0|home|^  将光标定位到行首;
​
gg      将光标定位到文件第一行
G       将光标定位到最后一行
nG|ngg      到文件第n行。
:n          移动到第n行。
​
fm      快速定位到当前行,光标之后的第一个m字符处(通常在行首使用),如果有多个相同字符,可以使用分号;进行下一个选择。
Fm      同上,只是反向查找。

1.2.3 复制/剪切/粘贴:

代码语言:javascript
复制
yy              复制整行
y$|y+end        从光标当前位置复制到行尾。
y0|y+home       从光标当前位置复制到行首。
p(小写)          粘贴(在下一行粘贴)
P(大写)         粘贴(在上一行粘贴)
​
d$|D|d+end      删除(剪切)当前位置到行尾的内容。
d0|d+home       删除(剪切)当前位置到行首的内容。
[n] dd: 删除(剪切)(n)行。
:m,nd 剪切m行到n行的内容。
dgg: 剪切光标以上的所有行。
dG: 剪切光标以下的所有行。
daw和das:剪切一个词和剪切一个句子,即使光标不在词首和句首也没关系
dw:剪切当前光标到单词结束!
​
# 删除匹配行:
:g/UUID/d   删除包含UUID的行
:g/#\|^$/d  删除#注释和空白行
:g/^$\|^\s*$\|^#/d   删除#注释/空白行/空字符串行

1.2.4 替换(一般命令模式):

代码语言:javascript
复制
r: 替换光标处的字符,同样支持汉字。
R: 进入替换模式,按esc回到正常模式。

1.2.5 替换(底部命令模式):

代码语言:javascript
复制
:s/old/new              用new替换当前行第一个old。
:s/old/new/g            用new替换当前行所有的old。
:n1,n2s/old/new/g       用new替换文件n1行到n2行所有的old。
:%s/old/new/g           用new替换文件中所有的old。
:%s/^/#/g               在每一行的行首插入#,^表示行首。
:%s/$/xxx/g             在每一行的行尾插入xxx,$表示行尾。
​
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc

1.2.6 自动填充:

代码语言:javascript
复制
在输入模式下输入部分字符然后输入
ctrl  +x 和 ctrl + n 用正在编辑的文件的内容作为关键字补齐。
ctrl  +x 和 ctrl + f  以当前目录内的文件名作为关键字补齐。
ctrl  +x 和 ctrl + o  以拓展名作为语法填充,以vim内建的关键词补齐。(必须要写对文件拓展名,比如.html,.php等等)

1.2.7 文档保存/退出:

代码语言:javascript
复制
:wq     保存并退出。
:x      保存并退出。
ZZ      保存并退出。
​
​
:q      文档未编辑时,可以直接退出。
:q!     文档编辑过了,强行退出,不保存。
​
:w          保存修改。
:w file2    将修改的文件保存到另外一个文件。
:r  file3   读取当前目录下的file3内容到当前文档。
​
:e!     一个文档修的地方太多了,最后自己都不知道哪里改对了,哪里改错了,可以使用重新加载文档,丢弃已做的改动。
​
​
:Sex        水平分割一个窗口,浏览文件系统,等同vim -o file1 file2;
:Vex        垂直分割一个窗口,浏览文件系统,等同于vim -O file1 file2;
​
ctrl +w  连按两次w,可实现两个窗口的切换
%   快速匹配括号
gf      打开以光标所在字符串为文件名的文件。然后使用ctrl + ^ 可以再次回到源文件。

1.2.8 基本排版:

代码语言:javascript
复制
<       先输入v进入可视化模式,向左缩进一个shiftwidth
>       先输入v进入可视化模式,向右缩进一个shiftwidth
.  表示重复
u   撤销
ctrl + r 反撤销
:ce[nter]本行文字居中
:le[ft] 本行文字靠左
:ri[ght] 本行文字靠右

1.2.9 编辑多个文件:

代码语言:javascript
复制
vim a.txt b.txt c.txt -p
* 使用:next(:n)编辑下一个文件。
* :2n 编辑下2个文件。
* 使用:previous或:N编辑上一个文件。
* 使用:wnext,保存当前文件,并编辑下一个文件。
* 使用:wprevious,保存当前文件,并编辑上一个文件。

1.2.10 改变大小写:

代码语言:javascript
复制
shift  ~: 反转光标所在字符的大小写。
可视模式下的U/u:把选中的文本变为大写或小写。
v 可视字符 ,可以选择多个字符 ,再按U ,可以将小写切换为大写
V 可视行,可以选择多行,再按u,可以将大写切换为小写

1.2.11 文件加解密:

代码语言:javascript
复制
vim -x file:        开始编辑一个加密的文件。
:X                  为当前文件设置密码。
:set key=           去除文件的密码。

1.2.12 折叠:

代码语言:javascript
复制
zf          创建折叠的命令,可以在一个可视区域上使用该命令,可缩减空间方便阅读;
zo          打开折叠的文本
zc          收起折叠;
zd          删除当前行的折叠,删除之后就不能再次折叠了;
za          打开/关闭当前折叠;
zfap        折叠光标所在的段;

1.3 常见设置:

1.3.1 智能缩进:

可以实现自动缩进与自动对齐。

代码语言:javascript
复制
:set si
​
取消:
:set nosi

1.3.2 自动对齐:

可以实现自动对齐,不可实现自动缩进。

代码语言:javascript
复制
:set ai
​
取消:
:set noai

1.3.3 显示行号:

代码语言:javascript
复制
:set nu
​
取消:
:set nonu

1.3.4 语法高亮:

代码语言:javascript
复制
:syntax on
​
取消:
:syntax off

1.3.5 显示换行符:

代码语言:javascript
复制
:set list
​
取消:
:set nolist

1.3.6 设置文件格式:

如果在windows系统编辑好的脚本上传到centos系统执行,遇到报错,可以尝试修改文件格式。

代码语言:javascript
复制
设置为windows格式:
:set fileformat=dos
设置为unix格式:
:set fileformat=unix
​
简写:
:set ff=unix|dos

1.3.7 增量搜索:

代码语言:javascript
复制
:set incsearch

1.3.8 显示命令:

代码语言:javascript
复制
:set showcmd

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. vim编辑器:
  • 1.1 Vim的几种模式:
  • 1.1.1 命令模式(normal模式):
  • 1.1.2 插入模式(insert模式):
  • 1.1.3 可视模式(visual 模式):
  • 1.2 最常用的命令:
  • 1.2.1 进入编辑模式:
  • 1.2.2 光标定位:
  • 1.2.3 复制/剪切/粘贴:
  • 1.2.4 替换(一般命令模式):
  • 1.2.5 替换(底部命令模式):
  • 1.2.6 自动填充:
  • 1.2.7 文档保存/退出:
  • 1.2.8 基本排版:
  • 1.2.9 编辑多个文件:
  • 1.2.10 改变大小写:
  • 1.2.11 文件加解密:
  • 1.2.12 折叠:
  • 1.3 常见设置:
  • 1.3.1 智能缩进:
  • 1.3.2 自动对齐:
  • 1.3.3 显示行号:
  • 1.3.4 语法高亮:
  • 1.3.5 显示换行符:
  • 1.3.6 设置文件格式:
  • 1.3.7 增量搜索:
  • 1.3.8 显示命令:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档