vi和vim的基本介绍
所有的linux系统都会内置vi文本编辑器
Vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完,编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vi和vim的常用三种模式
-
正常模式:以vim打开一个档案就直接进入一般模式(默认模式)。在这个模式中,可以使用[上下左右]按键来移动光标,你可以使用[删除字符]或[删除整行]来处理档案内容,也可以使用[复制,粘贴]来处理你的文件数据。
-
编辑模式:按下i,l,o,O,a,A,r,R,等任何一个字母之后才会进入编辑模式,一般按i即可。
-
命令行模式:这个模式当中,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等动作则是在此模式中达成的。
vi和vim模式的相互切换
-
正常模式--> 编辑模式 i或者a; 正常模式-->命令模式 用":或/"
-
编辑模式--> 正常模式 按esc键
-
命令模式--> 正常模式 按esc键
注意 :命令模式下 ":wq" 表示写入保存退出;":q"退出不保存;":q!"强制退出。
vi和vim快捷键
-
拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴"p"。
-
删除当前行dd,删除当前行向下的5行,5dd。
-
在文件中查找某个单词[命令模式下"/关键字"回车查找,输入"n"就是查找下一个]。
-
设置文件的行号,取消文件的行号,[命令模式下":set nu "和":set nonu"]。
-
编辑/etc/profile 文件,使用快捷键到底文档的最末行"G" 和最首行"gg" 在正常模式下执行
-
在一个文件中输入"hello",然后又撤销这个动作 正常模式下输入 "u"
-
编辑/etc/profile文件,并将光标移动到20行 "shift+g":操作步骤第一步显示行号,第二步输入20,第三步输入shift+g
-
其他的快捷方法自个去收集吧
其他一些快捷键
第一部分:正常模式下可以用按钮说明,光标移动,复制粘贴,搜寻取代。
移动光标的方法 | 说明 |
---|---|
h或向左箭头按键 | 光标向左移动一个字符 |
j或向下箭头按键 | 光标向下移动一个字符 |
k或向上箭头按键 | 光标向上移动一个字符 |
L或向右箭头按键 | 光标向右移动一个字符 |
总结:hjkl在一行,如果要移动多次数字加对应按键 | 如果要左移30行 "30h" |
[Ctrl]+[f] | 屏幕向下移动一页,相当于[page down]按键常用 |
[Ctrl]+[b] | 屏幕向上移动一页,相当于[page up]按键常用 |
[Ctrl]+[d] | 屏幕向下移动半页 |
[Ctrl]+[u] | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的下一列 |
n<space> | n表示数字,按下数字后再按空格键,光标会向右移动这一行的n个字符的距离 |
0或者功能键[Home] | 这是数字0;移动到这行的最前面字符处(常用) |
$或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕最上方的那一行的第一个字符 |
M | 光标移动到这个屏幕的中央的那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
n<Enter> | 光标向下移动n行(常用) |
搜寻与取代 | 说明 |
---|---|
/word | 向光标之下寻找一个名称为word的字符串(常用) |
?word | 向光标之上寻找一个字符串为word的字符串(常用) |
n | n是英文按键代表重复前一个搜寻动作,如果先/word执行向下寻找word,则按下n后,则会继续向下寻找word这个字符串 |
N | N是英文按键与n刚好相反, 为反向进行前一个搜寻;如果先/word执行向下寻找word,则按下N后,则会继续向上寻找word这个字符串 |
总结:使用/word配合n和N | 可以重复的帮你搜寻到一些关键词 |
:n1,n2/word1/word2/g | n1与n2为数字,在第n1和n2之间寻找word1这个字符串,并将该字符串替换为word2;eg[:100,200/student/teacher/g],在100到200行间将student替换为teacher(常用) |
:1,$s/word1/word2/g | 从第一行到最后一行寻找word1并将其取代为word2!(常用) |
:1,$s/word1/word2/gc | 从第一行到最后一行寻找word1并将其取代为word2!并在取代前显示提示字符串给用户确定是否需要取代(常用) |
删除与复制粘贴 | 说明 |
---|---|
x X | 在一行字当中,x为向后删除一个字符(相当deil按键),X为向前删除相当与(backspace按键,亦即是退格键)(常用) |
nx | n为数字,连续向后删除n个字符。 |
dd | 删除光标所在那一整列(常用) |
ndd | 删除光标所在向下n行 |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的数据 |
d$ | 删除光标所在处,到该行最后一个字符 |
d0 | 那个是数字0,删除光标到该行的最前面一个字符 |
yy | 复制光标所在的那一行(常用) |
nyy | n为数字,复制光标所在向下n行 |
y1G | 复制光标所在到第一行的所有数据 |
yG | 复制光标所在到最后一行的所有数据 |
y0 | 复制光标所在那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p,P | p为将已复制的数据在光标下一行贴上,P则为贴在上一行(eg:如果光标在20行处,且已经复制了10行,则按p会从21行开始粘贴。按P则在上一行粘贴把原来的20行推到30行去)(常用) |
J | 将光标所在行与下一行数据合成同一行 |
c | 重复删除多个数据,例如向下删除10行,[10cj] |
u | 复原前一个动作,相当于撤销(常用) |
[Ctrl]+r | 重做上一个动作(常用) |
第二部分:正常模式切换到编辑模式可以按钮
进入编辑模式下 | 说明 |
---|---|
i,I | 进入编辑模式下,i为从光标处开始;I为从光标所在行的第一个非空字符处开始(常用)(常用) |
a,A | 进入编辑模式,a为从光标所在下一个字符开始;A为从光标所在行的最后一个字符开始(常用) |
o,O | 进入编辑模式,o为在光标所在的下一行处插入新的一行;O为在目前光标处的上一行出入新的一行(常用) |
r,R | 进入编辑模式,r只会取代光标那个字符一次;R会一直取代光标所在的文字,直到按下Esc按键为止(常用) |
注意 | 上诉这些按键在vi界面左下会出现[---insert---]或[--replace---]字样,由名称可知道大概动作了吧 |
<Esc> | 退出编辑模式 |