一、文本编辑器VIM:
vim和vi的区别
vim介绍:
vim是unix操作系统中的文本编辑器
vim=vi+IMproved:加入了多级撤销、语法高亮和自动补全、
支持多种插件、可通过网络协议(HTTP/SSH)编辑文件、支持多文件编辑、可编辑压缩格式的文件
vimrc配置
rc=run+command:每一行作为一个命令进行执行
分系统级别的vimrc和用户级别的vimrc
快捷键
eg:
1、终端输入vim test
表示已vim文本编辑器打开test.txt,这时为普通模式
2、进入之后输入
:
进入编辑模式
3、当输入
3.1
:h vimrc
表示帮助显示vimrc的信息,这时可以查看什么时vimrc的定义,如果要退出帮助界面回到编辑界面,输入
3.2
:q
直接enter键即可
3.3
:q!
表示不保存当前修改,直接退出
3.4
/××××
表示高亮显示内容为××××的内容
3.5
××××?
表示查找内容为××××的位置
3.6
点击
i
表示进入插入模式,这时开始可以修改文件
3.7
点击Esc
表示退出编辑模式
4、若打开之后输入
:version
可得到vim的版本信息,同样以3的退出方式退出vim编辑器
5、可在终端输入
vim ~/.vimrc
打开vimrc文件
6、vimrc中的注释方式为单引号
"
开始
7、终端可输入clear
清除历史命令
vim四种不同模式
普通模式:打开文件之后的默认模式,可以进行移动查找删除修改等操作
可视模式:可对一整区操作
打开文件之后,输入
v
即可进入可视模式,这个时候移动光标即可选中一整块区域,如果想删除,直接点击
d
即可删除这块内容
插入模式:可添加文本
打开文件之后,输入
i
即可进入插入模式,这个时候就可以在文件中添加内容
命令模式:和普通模式类似
即先输入
:
再输入其他命令
如上面的:version
可查看版本
在学习下面的操作之前,可vim一个文件,再输入
:h operator
查看支持的操作指令
二、移动、跳转与缩进
光标的移动
h左移;l右移;j下移;k上移;$移动到行尾;0(包含缩进)或shift+6(不包括缩进)移动到行首
单词和字符串移动
w/W正向移动到下一个单词开头
b/B反向移动
e/E正向移动下一单词结尾
ge反向
跳转
ctrl+f/F下一页
ctrl+b/B上一页
ctrl+d/u向下/上翻半页
G跳转至文件的最后一行
{g}+ctrl+g/G查看文件信息/{g}更加详细
<line_number>gg/G跳转到指定行
缩进
>>表示当前行右缩进
<<表示当前行左缩进
:m,n>表示进入命令模式,m到n行缩进
:m>n等同于:m,m+n-1表示命令模式m行开始共n行缩进一次
三、剪切、复制、粘帖、撤销和恢复重做(vim当中对应的单词为delete、yank、put、undo和redo(ctrl+r))
首先
:reg
进入寄存器
剪切:
dd表示删除整行
复制:
yy表示复制整行
yw表示复制当前光标单词
y2w表示复制正向两个单词(可以为n个)
p/P表示粘帖到光标后/光标前
四、调换字符:
vim打开文件之后,查找某个字符可直接点击
f+
需要查找的字符(eg:空格或其他字符)+x
就会跳到最近查找字符的位置,并且删除该字符,这时再按下p即可进行粘贴
五、组合删除:
格式为:[count]operation([count]{motion})
eg:2d3w表示正向删除三个单词;5dw表示正向移动5次删除单词
x/X表示删除光标下/前单个字符
dw表示删除一个单词
d{hljk}表示删除上下左右一个操作前的字符
d$表示删除光标到行尾的字符
d^或d0表示删除光标到行首的字符
六、修改、查找和替换
插入:
shift+i/A表示插入模式并移动到行首/尾
a/i表示光标后/前插入
[n]+O/o:表示行前/后插入n次
[n]+i:表示插入模式重复n次,即写入要插入的内容之后,按下Esc,会自动填充n遍到文本当中
转换:
~表示单个大小写的转换
g~w表示单词大小写转换
g~$/g~~表示整行大小写转换
gU/uw表示单词转换为大/小写
查找:
F/f+字符:表示反向/正向查找单个字符
t+字符:表示查找字符前一个字符
dt+字符:删除光标到查找字符间的字符
/+字符:命令行查找,再跳过n进行next的切换
替换(substitute):
[range]s[ubstitute]/{pattern}/{string}/[flags]
s/going/rolling/g:表示当前行所有going替换为rolling
%s/going/rolling/g:表示%匹配所有范围,所有范围都进行替换
shift+r/R:表示进入替换模式,可以直接替换
r:单个字符的替换,可直接修改
cw:修改单个单词,就会删除当前单词,再进行替换(change word)
c$:修改光标之后行内容,就会删除从当前位置到行尾的内容
七、vim寄存器/赠查删改等常规操作/vim组合规律
寄存器:
有多种,且每种功能也不一样
无名寄存器:默认寄存器
数字寄存器:0用于复制专用寄存器,1-9对应不同的寄存器
有名寄存器:26个英文字母
黑洞寄存器:只想删除,想当于删除
八、缓冲区与多文件编辑/多窗口与标签分组/文本对象和宏/visual模式
缓冲区和多文件编辑
缓冲区:buffer是内存中的缓冲区域,用于临时存放vim打开过的文件
缓冲区列表:
命令查看缓冲区列表
:files
:buffers
:ls
缓冲区列表指示状态:
a表示激活缓冲区,缓冲区被加载且显示
h表示隐藏缓冲区,缓冲区被加载但不显示
%表示当前缓冲区
#表示交换缓冲区
=表示只读缓冲区
+表示已经更改缓冲区
-表示不可更改缓冲区
缓冲区列表的操作:
:bp表示上一个缓冲区(previous)
:bn表示下一个缓冲区(next)
:bf表示第一个缓冲区(first)
:bl表示最后一个缓冲区(last)
:buffer Nmuber或File_name表示指定缓冲区
:ball表示编辑所有缓冲区
ctrl+^/b#表示切换到前一个buffer
:bd + ×××.txt表示删除名字为×××的缓冲区(delete)
:%bd表示删除所有缓冲区
多窗口操作(分屏)及标签分组
标签包括多个窗口,相当于容纳一系列窗口的容器,每个窗口包括一个buffer
分屏操作:(w可表示为window)
eg:vim -o4 buf-*表示垂直方向打开四个已buf开头的文件
vim -O/on表示水平/垂直分屏
ctrl+w c/q表示关闭当前窗口/最后窗口时退(close,quit)
ctrl+w s表示上下分割当前打开的文件(split)
:sp filename表示上下分割,并打开一个新的文件
ctrl+w v表示左右分割当前打开的文件(vsp)
:vsp filename表示左右分屏幕,并打开一个新的文件
移动分屏和尺寸变换:
ctrl+w K表示向上移动
ctrl+w J表示向下移动
ctrl+w H表示向左移动
ctrl+w L表示向右移动
ctrl+w +表示增加高度
ctrl+w -表示减少高度
ctrl+w =表示所有屏高度一致
标签操作:
:tabnew表示新建标签
:tabfind+×××.txt表示查找并在新标签中打开文件
:tabs显示已打开标签页的列表
:tabclose表示关闭当前页的标签
:tabonly表示仅保留当前标签页打开
:tabn/p/first/last表示移动到下/上/第一/最后一个标签页(next/previous/first/last)
:tabm表示將当前页放置到指定位置
标签操作和命令键:
gt/T表示移动到下/上一个标签
{i}gt表示移动到i位置的标签
:tabe编辑标签中的某个文件
tabm 0/tabm表示移动当前tab到第一个/最后一个(m表示move)
tabm{i}表示移动当前tab到i+1位置
文件对象和宏:
文本对象是在可视化模式下的表现,一般包括
w:word s:sentence p:paragrapg 块对象
可视化模式下的指令
viw表示选中单词
vis表示选中句子
vip表示选中段落
vi(表示选中圆括号中的内容
vi[表示选中中括号中的内容
vit表示选中标签中的内容
同时可以带上数字,进行组合操作
eg:v3aw表示选中三个单词,包括中间的两个间隔空格
v3iw表示选中三个单词,指两个单词和一个空格,总共三个
宏的简单操作(类似于函数,將你的操作进行存储,再进行批量操作):
qa开始录制宏存到寄存器a中
qA追加宏在a寄存器中追加
n@a执行n遍a寄存器中的操作(@表示调用寄存器,执行完毕之后直接点击q即可退出寄存器)
@@再执行一遍上一次操作
:let @a= '编辑宏a寄存器
:n,mnormal @a表示n到m行执行寄存器a宏操作
visual模式
在可视化模式下,可以对一个文本块进行整体操作
三种子模式:
v表示激活面向字符的可视模式 V/shift+v表示激活面向行的可视模式 Ctrl+v表示激活面向列块的可视模式
可视化操作:
gv表示重新选择上一次的选中区域
o表示切换选取边界,即在选中区域的两端进行切换
具体实践:
eg:进行整行的替换
先V选中整行,再r+&即將整行变成&