一、vi与vim
注:在Linux的系统中使用文本编辑器来编辑Linux参数配置文件
在Linux中,绝大多数的配置文件都是以ASCII的纯文本形态存在。因此,可以利用简单的文本编辑软件修改设定。
注:什么是纯文本文档?
档案记录的是0与1,通过编码系统来将这些0与1转化为文字。
学习vim的原因:
·vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计
·程序简单,编辑速度快
·多个软件的编辑接口都会主动呼叫vi
什么是vim:
vi的进阶版本,vim可以用颜色或底线等方式显示一些特殊信息。
vim会依据档案的扩展名或是开头信息,判断该档案的内容而自动的呼叫该程序的语法判断式,再以颜色来显示程序代码与一般信息。
vim是个程序编辑器。
vi是老式的字处理器。vim是程序开发工具而不是文字处理软件。
二、vi的使用
vi共分为三种模式【一般模式】【编辑模式】【指令列命令模式】
·一般模式:以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,可以使用上下左右按键来移动光标,可以使用【删除字符】【删除整行】来处理档案内容,也可使用【复制、粘贴】处理文件数据
·编辑模式:按下【i、I、o、O、a、A、r、R】进入编辑模式,按下这些案件时,在画面的左下方会出现【INSERT】字样。要回到一般模式时,必须按下【Esc】键才可推出编辑模式
·指令列命令模式:在一般模式中 ,输入【:/?】三个中的任何一个按钮,可将光标移动到最底下一行。在命令行模式下,可以提供相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作。
1、简易执行范例
vi test.txt
输入【vi 档名】进入vi一般模式,vi后面一定要加档名,不管档名存在与否 。
按下【Esc】键回到一般模式
输入【:wq】存档离开(按下:光标就移动到最底下一行)
如果权限为-r--r--r--,可能会无法写入,输入【:wq!】强制写入
2、按键说明
注:vim的三种模式只有一般模式可以与编辑、指令列命令模式切换,编辑模式与命令模式之间不能切换
·第一部分:一般模式可用的按钮说明。
移动光标的方法 | |
---|---|
h或向左箭头 | 光标向左移动一个字符 |
j或向下箭头 | 光标向下移动一个字符 |
k或向上箭头 | 光标向上移动一个字符 |
l或向右箭头 | 光标向右移动一个字符 |
ctrl+f | 屏幕向下移动一页,相当于【page down】 |
ctrl+b | 屏幕向上移动一页,相当于【page up】 |
ctrl+d | 屏幕向下移动半页 |
ctrl | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的上一列 |
n【space】 | n代表数字,按下数字后再按空格键,光标会向右移动这一行的n个字符 |
0或【Home】 | 移动到这一行的最前面字符处 |
$或【End】 | 移动到这一行的最后面字符处 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行 |
nG | n为数字。移动到这个档案的第n行(可配合:set nu) |
gg | 移动到这个档案的第一行 |
n【Enter】 | n为数字。光标向下移动n行 |
/word | 向光标之下寻找一个名为word的字符串 |
?word | 像光标之上寻找一个字符串名为word的字符串 |
n | n为英文键。代表【重复前一个搜寻的动作】 |
N | N为英文键。与n刚好相反,反向进行前一个搜寻动作 |
:n1,n2s/word1/word2/g | n1与n2为数字。在n1与n2之间寻找word1 这个字符串,并将该字符串取代为word2 |
:1,$s/word1/word2/g | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 |
:1,$/word1/word2/gc | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认是否需要取代 |
x,X | 在一行字当中,x为向后删除一个字符,X为向前删除一个字符 |
nx | n为数字,连续向后删除n个字符。 |
dd | 删除游标所在的那一整列 |
ndd | n为数字,删除光标所在的向下n列 |
d1G | 删除光标所在第一行的所有数据 |
dG | 删除光标所在以后 |
d$ | 删除游标所在处,到该列的最后一个字符 |
d0 | 数字为0的,删除游标所在处,到改行的最前面 |
yy | 复制游标所在的那一行 |
nyy | n为数字,复制光标所在的向下n列 |
y1G | 复制光标所在列到第一列的所有数据 |
yG | 复制光标所在列到最后一列的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
P,p | P为将已复制的数据在光标下一行粘贴上,p为贴在游标上一行 |
J | 将光标所在列与下一列的数据结合成同一列 |
c | 重复删除多个数据 |
u | 重复前一个动作 |
【ctrl】+r | 重做上一个动作 |
. | 重复前一个动作 |
·第二部分:一般模式切换到编辑模式的可用按键说明
i,I | 进入插入模式:i为从目前光标所在处插入 I为在目前所在行的第一个非空格符处开始插入 |
a,A | 进入插入模式:a为从目前光标所在的下一个字符处开始插入 A为从光标所在行的最后一个字符处开始插入 |
o,O | 进入插入模式:o为在目前光标所在的下一行处插入新的一行 O为在目前光标所在处的上一行插入新的一行 |
r,R | 进入取代模式:r只会取代光标所在的那一个字符一次 R会一直取代光标所在的文字,直到按下【Esc】为止 |
【Esc】 | 退出编辑模式,回到一般模式中 |
·第三部分:一般模式切换到命令行模式
:w | 将编辑的数据写入硬盘档案中 |
:w! | 若文件属性为【只读】时,强制写入该档案 |
:q | 离开vi |
:q! | 若曾修改过档案,又不想存储,使用!强制离开不能存储档案 |
:wq | 存储后离开,若为:wq!强制储存后离开 |
ZZ | 大写的Z,若档案没有更动,则不存储离开,若档案已经被更动过,则存储后离开 |
:w【filename】 | 将编辑的数据储存成另一个档案 |
:r【filename】 | 在编辑的数据中,读入另一个档案的数据,将【filename】这个档案内容加到游标所在的行后 |
:n1,n2 w[filename] | 将n1到n2的内容存成filename这个档案 |
:!command | 暂时离开vi到指令列模式下执行command的显示结果 |
:set nu | 显示行号,设定之后,会在每一行的前缀显示改行的行号 |
:set nonu | 与set nu相反,取消行号 |
vi中,数字通常代表重复做几次的意思,也可能代表去到第几个什么什么的意思
3、案例练习
1)在/tmp这个目录下建立一个名为test的目录
mkdir /tmp/test
2)进入test这个目录当中
cd /tmp/test
3)将/etc/man.config复制到本目录底下
cp /etc/man.config .
4)使用vi开启本目录下的man.config这个档案
vi man.config
5)在vi中设定一下行号
:set nu
6)修改完之后,突然反悔,要全部复原,有哪些方法
一直按【u】键回复到原始状态
使用不存储离开【:q!】之后,再重新读取一次该档案
三、vim的额外功能
1、区块选择
v | 字符选择,将光标经过的地方反白选择 |
V | 行选择,会将光标经过的地方反白选择 |
ctrl+v | 区块选择,可以用长方形的方式选择资料 |
y | 将反白的地方复制起来 |
d | 将反白的地方删除掉 |
2、多档案编辑
:n | 编辑下一个档案 |
:N | 编辑上一个大难 |
:files | 列出目前这个vim的开启的所有档案 |
3、多窗口功能
:sp[filename] | 开启一个新窗口,如果有加filename,表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示) |
【ctrl】+w+j | 按键按法:先按下【ctrl】不放,再按下w后放开所有的键,然后再按下j(或向下箭头键),光标可移动到下方的窗口 |
【ctrl】+w+k | 同上 |
【ctrl】+w+q | 等价于:q结束离开 |
4、vim环境设定与记录
:set nu :set nonu | 设定于取消行号 |
:set hlsearch :set nohlsearch | 设定是否将搜寻的字符串反白 |
:set autoindent :set noautoindent | 是否自动缩排 |
:set backup | 是否自动存储备份档 |
:set ruler | 显示或者不显示该设定值 |
:set showmode | 是否要显示--INSERT--之类的字眼在左下角的状态栏 |
:set backspace=(012) | 一般按下i进入编辑模式后,可以利用【backspace】来删除任意字符。但是,某些情况不允许。当backspace为2时,可删除任意值。0或1,仅可删除刚刚输入的字符,无法删除原本已经存在的文字。 |
:set all | 显示目前所有的环境参数设定 |
:set | 显示于默认值不同的设定参数 |
:syntax on :syntax off | 是否依据程序相关语法显示不同的颜色。例:编辑纯文本文档时,如果以#开头,该行会变成蓝色。 |
:set bg=dark :set bg=light | 显示不同的颜色色调,预设是【light】 |
注:整体vim的设定值一般是放在/etc/vimrc档案
四、vim使用注意事项--中文编码问题
中文档案中一堆乱码,需要考虑:
终端界面的语系与LANG这个变数有关
档案原本的编码
开启终端机的软件