文章目录
1.前言
仅作记录。
insert模式,按i即可进入,也就是可以随意输入内容的模式。
normal模式,按esc键进入。
visual模式,按v进入,这个模式可以实现模拟鼠标选中某些字符。
2.文件编辑相关
2.1 已打开一个文件后再打开另一个文件
打开文件1后,在normal模式下打开文件2:
:open 2
2.2 切换已打开的文件
:bp #切换到上一个文件
:bn #切换到下一个文件
2.3 在同一个页面编辑多个文件
打开文件1,同时在当前页面打开文件2:
vim 1
:split 2
2.4 查看所有被打开文件的文件名
:args
如下图所示,我们打开了三个文件,并且当前正在编辑的是文件1
2.5 打开远程文件,比如ftp或者share folder
:e ftp://192.168.10.76/abc.txt
:e \\qadrive\test\1.txt
3. 内容编辑相关
3.1 去重/显示行号
:set nu #显示行号
:sort #排序
:g/^\(.*\)$\n\1$/d #去除重复行
sort u #直接去重复
3.2 索引相关
%
可以匹配当前括号的另外一边。#
和*
代表匹配当前单词并移动光标到下一个匹配值或上一个匹配值。例如我们把光标移动刀第一个123上,然后再normal模式中按#
即可移动到下面的123上。
/asdf或者?asdf
定向索引,区别是前者是正向全局查找,后者是反向全局查找,都是全局查找,只是方向不同,就跟逆时针跟顺时针一样。然后N
可以切换上一个匹配的位置,n
是下一个匹配的位置。例如下图,我们把光标移动到第十行,使用/666
会查找到11行的666紧接着我们按n
就会切换到下一个匹配的值,因为11行下面没有匹配的值了,因此会从第一行重新开始匹配,也就是会匹配到第八行的666。?666
会反向查找第8行的666按n会将光标移动到下一个匹配值也就是11行的666,再按n又会回到第八行的666:
- 其他设置细节
:set ignorecase 忽略大小写的查找
:set noignorecase 不忽略大小写的查找
:set hlsearch 高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。
:set nohlsearch 关闭高亮搜索显示
:nohlsearch 关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。
:set incsearch 逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。
:set wrapscan 重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。
3.3 输入位置相关
normal模式下先将光标移动到某一行到某个字符上
i #在当前字符前面进行输入
I #在当前行首进行输入
a #在当前字符后面进行输入
A #在当前行尾进行输入
o #在当前行下面重新开辟一行进行输入
O #在当前行上面重新开辟一行进行输入
3.4 替换命令
ra
#将当前光标所选中的字符替换为a。
ddp
#交换当前行与下一行的内容。
%s/old/new/g
#用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g
#在第10行知第20行每行前面加四个空格,用于缩进。
3.5 删除
x
#删除选中字符
dd
#删除当前行
D
#删除当前行的内容但不删除当前行
dG
#删除当前行以及当前行之后到所有行
3.6 拷贝和黏贴
按v进入visual模式,然后使用小键盘的上下左右或者hjkl来移动光标选中目标字符,然后使用y命令复制
内容,使用p命令,在当前光标右侧黏贴内容。
yy #复制当前行
p #将yy命令复制到字符黏贴到当前行的下面一行
3.7 剪贴
按v进入visual模式,然后使用小键盘的上下左右或者hjkl来移动光标选中目标字符,然后使用d命令剪切
内容,使用p命令,在当前光标右侧黏贴内容。
4.移动命令
normal模式下(esc键进入normal)
3h
#左移3位
3l
#右移3位
3j
#下移3位
3k
#上移3位
0
#零是移动到行头
$
#移动到行尾
gg
#移动到文件头
shift+g
#移动到文件尾
7G
#移动到第七行开头
w
#移动到下一个单词的开头
ye
#从当前位置拷贝到当前单词的最后一个字符
5. 撤销
u
#撤销操作
ctrl+r
#撤销刚才到撤销操作
6. 保存与退出
ZZ
#两个大写Z=:wq!,是保存并退出的意思
:q!
#强制退出并忽略所有更改
-------其他-------
- 所有
:
或者\
相关的命令都可以按小键盘的上或者下来查看历史记录。 ctrl+p
自动补齐。
vim美化
cd ~
cp /etc/vim/vimrc .vimrc
在.vimrc中添加如下配置:
syntax on
set nu!
set autoindent
hi Comment ctermfg=DarkCyan
set encoding=utf-8
set hlsearch
set incsearch
set cursorline
set showmatch
let skip_defaults_vim=1