1. 安装
sudo apt-get install vim
或者
yum install -y vim-enhanced
2. 具体使用技巧如下
命令/操作 |
说明 |
vim + filename |
打开文件并定位到最后一行 |
vim +5 filename |
打开文件并定位到第5行 |
:edit /path/to/file |
在vim中打开文件(支持Tab补全) |
命令/操作 |
说明 |
j |
向下移动一个实际行 |
gj |
向下移动一个屏幕行 |
k |
向上移动一个实际行 |
gk |
向上移动一个屏幕行 |
0 |
移动到实际行的行首 |
g0 |
移动到屏幕行的行首 |
^ |
移动到实际行的第一个非空白字符 |
g^ |
移动到屏幕行的第一个非空白字符 |
$ |
移动到实际行的行尾 |
g$ |
移动到屏幕行的行尾 |
f+ |
查找下一个+(;下一个,上一个) |
w |
正向移动到下一单词的开头 |
b |
反向移动到当前单词/上一单词的开头 |
e |
正向移动到当前单词/下一单词的结尾 |
ge |
反向移动到上一单词的结尾 |
0 |
移动到行首 |
$ |
当前行的末尾 |
gg/1G |
文件第一行 |
G |
文件最后一行 |
:7 |
定位到第7行 |
行号+G |
指定行 |
ctrl + o |
跳转回之前的位置 |
ctrl + i |
返回跳转之前的位置 |
ctrl + U |
上翻页 |
ctrl + D |
下翻页 |
命令/操作 |
说明 |
ESC |
进入正常模式 |
:q! |
不保存退出 |
:wq |
保存后退出 |
:w |
仅保存 |
:saveas file |
将文件另存为file,但不退出 |
ZZ |
保存后退出 |
ZQ |
不保存退出,Q表示放弃 |
命令/操作 |
说明 |
x |
删除光标处的字符 |
nx |
删除光标所在处后的n个字符 |
dw |
删除光标之后单词的剩余部分(含光标处字符) |
cw |
同上,但最后进入插入模式 |
daw |
删除光标所在处的一个单词 |
caw |
同上,但最后进入插入模式 |
d$ |
删除至当前行尾 |
dd |
删除整行 |
dG |
删除光标所在行到末尾行的所有内容 |
D |
删除光标所在处到行尾的内容 |
: 5,7d |
删除第5到第7行 |
2dd |
删除两行 |
ggdG |
删除所有内容 |
:%d |
清空文档(%表示所有行) |
命令/操作 |
说明 |
i |
左边插入文本 |
a |
有变插入文本 |
A |
当前行末尾添加 |
r |
替换当前字符(rc,将光标处字符替换为c) |
R |
进入替换REPLACE模式,可以连续完成替换 |
o |
打开新的一行并进入插入模式 |
Ctrl + a |
数字加一 |
Ctrl + x |
数字减一 |
vit |
可视模式下高亮选中标签内部的内容(visually select inside the tag):U变大写/u变小写 |
~ 删除列
1) 光标定位到要操作的地方。
2) CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3) d或x 删除。
~ 插入列
插入操作稍有区别。例如我们在每一行前都插入"() ":
1) 光标定位到要操作的地方。
2) CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3) SHIFT+i 输入要插入的内容。
4) ESC 按两次,会在每行的选定的区域出现插入的内容。
1) CTRL+v,进入列块模式,选中需要复制的内容。
2) “y” 复制内容,4line yanked 说明复制了四行。
3) 然后移动光标到行首,“p”在光标的后面一列输出内容,按“P”在光标前面一列输出内容。
4) 大小p的区别是黏贴内容的区域是所选择光标的前面还是后面一列。
命令/操作 |
说明 |
u |
undo |
ctrl +r |
redo |
. |
重复上一次操作 |
命令/操作 |
说明 |
v |
进入可视模式(字符) |
V |
进入可视模式(行) |
y |
复制 |
p/P |
粘贴 |
yy |
复制当前行 |
dd |
剪切当前行 |
yG |
复制当前行直到最后一行 |
命令/操作 |
说明 |
ctrl + g |
显示当前行以及文件信息 |
命令/操作 |
说明 |
/ |
正向查找(n:继续查找,N:相反方向继续查找,/\c忽略大小写。注意,不使用/\v时,必须转义 (、 )、│ 、+、?、{、} 字符 |
? |
逆向查找(?\c忽略大小写) |
% |
查找配对的 {,[,( |
* |
高亮显示光标处单词在文件中的所有匹配(n下一个匹配,N上一个匹配) |
:set ic |
忽略大小写 |
:set noic |
取消忽略大小写 |
:set hls |
匹配项高亮显示 |
:set nohl |
取消搜索关键字的高亮(或者:noh) |
:set is |
显示部分匹配 |
:set nu |
显示行号 |
:set nonu |
取消行号的显示 |
:set list |
显示不可视字符 |
:set nolist |
取消显示不可视字符 |
:set background=dark |
设置深色背景 |
:set background=light |
设置亮色背景 |
:set all |
查看vim的全部设置 |
:h magic |
通过关键字magic查询帮助 |
注意:在查找命令" / "和“ ? ”后边可以使用如下记号实现整字匹配的查找。
/\<word\>
或者
?\<word\>
命令/操作 |
说明 |
😒/old/new |
替换该行第一个匹配串 |
😒/old/new/g |
替换全行的匹配串 |
:%s/old/new/g |
替换整个文件的匹配串(%表示所有行g表示所有列。注:\r是回车换行) |
:%s/old/new/gci |
(选项:g global; i ignorecase; c confirmation; 次序无要求) |
命令/操作 |
说明 |
zc |
折叠 |
zC |
折叠所有嵌套 |
zo |
展开折叠 |
zO |
展开所有折叠嵌套 |
:set paste
粘贴
:set nopaste
快捷键设置vim ~/.vimrc
set pastetoggle=<F12>
命令/操作 |
说明 |
:!cmd |
执行外部命令 |
:.!date |
vim中当前光标位置插入命令date的输出结果 |
:r!date |
vim中当前光标的下一行插入date的结果 |
:!python3 % |
(%在命令模式中指当前文件名) |
:shell |
开启一个bash shell |
:2,$!sort -t, -k2nr |
把csv文件内容从第二行到最后一行按第二列进行排序,且以,分割字段(-k2nr中n是数字排序,默认字符序,r是倒序) |
:1,$!cut -d, -f 2 │ sort -u |
把csv文件中的第二列取出,排序,去重(1指第一行,$指最后一行,.指当前行) |
:1,$!sort -t, -k2 -u |
把csv文件中的第二列排序并依据第二列的内容去重,行保留完整列(!G给出:.,$!) |
:.,$!sort -t. -k1n,1 -k2n,2 -k3n,3 -k4n,4 -u |
从当前行到最后一行对IPv4地址排序并去重 |
:1,$!cut -d. -f4 -s |
从第一行到最后一行,以.为字段分割符,投影第4列,且不输出不包含分隔符的行 |
:1,$!sed -n 'n;p' |
输出偶数行 |
:1,$!sed -n 'p;n' |
输出奇数行 |
:1,$!awk '1; { print "" }' |
两行间插入一个空行 |
注:
awk 'NR%2==0{print a"="$0}{a=$0}' test6.txt 让“奇数行=偶数行”
seq 10 产生1~10的序列(每行)
paste test7.txt test8.txt | tr "\t" "\n" 将两个文件的所有行交错合并(paste为coreutils软件包,用于文件的列合并)
命令/操作 |
说明 |
〈C-w〉w |
在窗口间循环切换 |
〈C-w〉h |
切换到左边的窗口 |
〈C-w〉j |
切换到下边的窗口 |
〈C-w〉k |
切换到上边的窗口 |
〈C-w〉l |
切换到右边的窗口 |
:q |
关闭当前窗口 |
:close |
关闭当前窗口,但不能关闭最后一个窗口 |
命令/操作 |
说明 |
:tabedit test.csv |
打开文件到一个标签页 |
gt |
切换到下一标签页 |
gT |
切换到上一标签页 |
:close |
关闭当前标签页 |
命令/操作 |
说明 |
:pwd |
显示当前路径 |
:e. |
打开当前目录 |
- Tab设置
在~/.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:
set ts=4
set expandtab
对于已经保存的文件,将Tab替换为空格,执行如下命令:
:set ts=4
:set expandtab
:%retab!
加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加!,则只处理行首的TAB。
:l
在命令显示区将显示当前行的所有不可显字符。
在插入模式下“-- INSERT --”
Ctrl + v + 【功能键】
可以产生不可显字符。
- 文件加密
必须在新建文件的时候就进行密码设置,加密才起效。
查询加密方式
:help 'cm'
设置加密方法
:setlocal cm=blowfish2
设置密码
:X
在命令行中打开文件并设置密码
$ vim -x file.txt