近期学习的Vi/Vim知识笔记,内容原创,转载请注明来源!
必须知道的三种模式
一般模式(命令行模式)
光标移动
删除单个/整个字
复制/粘贴
编辑模式(插入模式)
可以插入字符
指令模式(底行模式)
读取文件,储存文件,搜索/取代等功能
一般-->编辑
i/I:插入
i:在光标当前位置开始插入;I:在当前行首开始插入
a/A:增加
a:在光标当前位置的下一个位置开始插入;
A:在当前行末尾开始插入
o/O:插入新行
o光标所在行的下一行开始输入文字;
O光标所在行的上一行开始输入文字
r/R:取代
r:取代光标所在的一个字符(多输无效)
R:一直取代光标所在的文字(一个接一个,按Esc停止)
方向键:
h:左
j:下
k:上
l:右
数字0:本行首字符
$:本行最后的字符
G:移到文档最后
nG(n位数字):移到第n行
gg:移到第一行(相当于1G)
w:向后跳一个单词的长度(跳到下一个单词开头)
b:向前跳一个单词的长度(跳到下一个单词开头)
{:跳到上一段代码
}:跳到下一段代码
n+enter:向下移动n行
n+space:向后移动n个字符
显示与隐藏行号
1. 显示行号
:set number
或者
:set nu
2. 取消行号显示
:set nu!
3. 每次打开都显示行号
修改vi ~/.vimrc 文件,添加:
set number
复制、粘贴
yy复制光标所在的哪一行
nyy复制光标所在的下n行,例如20yy即为复制20行
p,P:p复制的数据在光标下一行粘上,P为粘在上一行
撤销
u:复原前一个动作
Ctrl+R: 重做刚在的那个动作(撤销后悔了)
:e! :
复原档案到最原始的状态
缩进
先按下v(按字符选择)/V(按行选择),随后通过方向键移动选择区域。
按下<<向左缩进,>>向右缩进。
查找
/word :从光标所在位置向下搜索字符串word
?word :/word :从光标所在位置向上搜索字符串word
n :继续同方向查找下一个
N :反方向查找下一个
针对查找结束接着高亮:
:nohl即可搞定
按n会接着查找:
接着查找一个不存在的字符串就行了。
删除/剪切
x,X : x为向后删除一个字符
X为向前删除一个字符
nx为向后删除n个字符
nX为向前删除n个字符(包含光标所在字符)
dd删除光标所在的那一整行(实质为剪切)
D剪切当前光标到本行末的字符
d0剪切当前光标到本行首的字符
ndd删除光标所在的向下n行,例如20dd即为删除20行(实质为剪切)
d1G删除光标所在行到第一行的所有数据
dG删除光标所在行到最后一行所有数据
替换
全局替换
%s/hello/world/g #将hello替换为world
%s///g #记法
局部替换
n1,n2s/word1/word2/g
在n1行和n2行之间查找字符串word1,并将该字符串替换为word2,其中g代表global的意思。
1,$s/word1/word2/g
第一行到最后一行查找字符串word1,并将该字符串替换为word2,其中g代表global的意思。
1,$s/word1/word2/gc
第一行到最后一行查找字符串word1,并将该字符串替换为word2,其中g代表global的意思,c代表取代前让用户逐个确认是否需要取代
不加确认命令的全文替换与以下形式等价:
%s/word1/word2/g
保存
:w将编辑的数据写入硬盘档案中
:w!若档案属性为只读时,强制写入该档案
另存为
:w filename将编辑的数据储存成另一个档案
:n1,n2 w filename将n1到n2行的内容储存成filename这个档案
退出
:q离开vi
:q!若曾修改过档案,又不想储存,使用!为强制离开不储存档案。
:wq储存后离开,若为:wq!则为强制储存后离开
:x保存并退出
以下内容引用自https://www.cnblogs.com/andreking/p/5793782.html
":x" 和 ":wq" 的区别如下:
(1) :wq 强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。
(2) :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。
翻页
Ctrl+b、pageup 屏幕向上移动一页
Ctrl+f、pagedown 屏幕向下移动一页
Ctrl+u 屏幕向上移动半页
Ctrl+d 屏幕向下移动半页
其中Putty和secureCRT 中,不支持使用pageup和pagedown
其他常用命令
:r[filename]在编辑的数据中,读入另一个档案的数据。亦即将[filename]这个档案内容加到游标所在行后面
:setnu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与setnu相反,为取消行号!
:!command暂时离开vi到指令列模式下执行command的显示结果
vim的附加功能
块选择(visual block)
v:字符选择,将光标经过的地方反白选择
V:行选择,将光标经过的行反白选择
Ctrl+v:块选择,可以用长方形的方式选择数据
y:复制反白的地方
d:将反白的地方删除掉
多文件编辑(vim filename01 filename02 ..)
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前vim打开的所有文件
多窗口功能
:sp filename 打开一个新窗口,如果加file,表示在新窗口打开一个新文件,否则表示两个窗口同时打开一个文件
Ctrl+wj 先按ctrl不放,再按w后放开两键,再按j则游标移动到下方的窗口
Ctrl+wk 按键方式同上,光标移动到上方窗口
Ctrl+wq 保存退去
补充
一般模式下:
shift+zz = wq
.相当于重复执行上一条命令
底行模式下:
x = wq
参考资料:
《鸟哥的Linux私房菜》 --人民邮电出版社出版
https://www.bilibili.com/video/av65740545?p=12
Vim命令汇总:
https://blog.soarli.top/fun/vim/
笔记内容原创,转载请注明来源!
版权属于:soarli
本文链接:https://blog.soarli.top/archives/24.html
转载时须注明出处及本声明。