目录
7.vim环境设定与记录: ~/.vimrc, ~/.viminfo
1.学习Vim程序编辑的原因?
1.所有的Unix Like系统都会带有Vim编辑器,其他的则不一定。
2.有些软件的接口需要使用编辑器时直接呼叫Vim,所以必须掌握。
3.Vim具有程序编辑能力,主动纠正语法错误,简单易用,而且根据语法会有不同的颜色区分。
2.vim编辑器的简单使用
1.打开一个文件:
使用命令:vim 档案名
提示:没有指明打开路径,就是当前路径,如果vim后面的档案时不存在的则会新建一个新的档案(这个档案是在内存中的,如果保存则会存入硬盘里,如果取消保存则从内容里消失)。
2.vim编辑器的模式:一般模式、编辑模式与指令列命令模式(末行模式)
一般模式:用vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移劢光标,可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』处理你的文件数据。
一般模式下移动光标的方法:
快捷键 | 含义 |
CRTL + f | 屏幕向下一定一页,和Page Down一样 |
CTRL + b | 屏幕向上移动一页,和Page Up一样 |
CTRL + d | 屏幕向下移动半页 |
CTRL + u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的上一列 |
n(数字)+空格 | 例如:10 ,然后按空格,光标向右移10个字符 |
数字0或home键 | 移动到这一行的最前面字符处 |
$或功能键End | 移动到这一行的最后面字符处 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行 |
n(数组)G | 移动到这个档案的n行,10G移动到档案的第10行 |
gg | 移动到档案的第一行 |
n(数字)<Enter> | 光标向下移动n行 |
一般模式下,删除、复制与粘贴:
快捷键 | 含义 |
x,X | 在一行字当中,x为向后删除一个字符(类似delete键),X为向前删除一个字符(类似Backspace退格键) |
n(数组)x | 连续向后删除n个字符,举例,向后删除10个字符,10x |
dd | 删除光标所在的那一整列行 |
ndd | 删除光标所在的向下n列,例:删除光标向下10列:10dd |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行所有数据 |
d$ | 删除光标所在处,到该行的最后一个字符 |
d0 | 删除光标所在处,到该行的最前面的一个字符 |
yy | 复制光标所在的那一行 |
nyy | 复制光标躲在的向下的n行,例如:复制光标向下的10行,则10yy |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的哪个字符到该行行尾的所有数据 |
p,P | p为将已经复制的数据在光标下一行贴上,P则贴在游标上一行,例子: 目前光标在10行,已经复制5行数据, 按下p后那5行数据会贴在原本的10行之后,P,原来的第10行会变成15行 |
J | 将光标所在行与下一行的数据结合成一列 |
c | 重复删除多个数据 |
u | 复原到前一个动作之前(撤销) |
CTRL + r | 重做上一个动作(redo) |
一个小数点 . | 重复前面的一个动作 |
编辑模式:在一般模式中可以进行删除、复制、粘贴上等等的的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母后后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『 INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。
小技巧:一般模式切换到编辑模式的可用的按钮说明
快捷键 | 含义 |
i,I | 进入插入模式 i,表示从光标处插入,I,在目前所在行第一个非空格符处开始插入(常用) |
a,A | 进入插入模式: a,从光标所在的下一个字符开始插入,A,从光标所在行的最后一个字符开始插入。 |
o,O | 进入插入模式 o,在光标所在的下一行处插入新的一行;O,在光标所在处的上一行插入新的一行 |
r,R | 进入取代模式: r,只会取代光标所在的那一个字符一次;R,一直取代光标所在的文字,直到按下ESC按键为止。 |
ESC | [Esc] 退出编辑模式,回到一般模式中(常用) |
末行模式:在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你搜索的动作,而读取、存盘、大量字符替换、离开 vim编辑器 、显示行号等等的动作则是在此模式中达成的!
Tips:一般模式切换到指令列模式(末行模式)可用的按钮说明
指令 | 含义 |
: w | 将编辑的数据写入硬盘档案中 |
: w! | 若文件属性为只读时,!代表强制的意思。如果强制还不能写入,那就去看看你的档案权限吧 |
: q | 退出 vim 编辑器 |
: q! | 使用vim 改变过档案,但是不想保存就退出,此时使用强制退出 |
: wq | 保存后退出 |
: wq! | !wq表示强制保存退出 |
ZZ | 若档案没有更动,则不储存离开,若档案改动,则储存后离开 |
: w[filename] | 将编辑器的数据存储成另一个档案(window的另存类似) |
: r[filename] | 在编辑数据中,读入另一个档案的数据,将filename这个档案加载到鼠标所在行的后面 |
:n1,n2 w[filename] | 将n1到n2的内容储存成filename这个档案 |
:! command | 暂时离开 |
vim行号显示与取消显示 | |
: set nu | 显示行号,每一行前缀显示该行的行号 |
: set nonu | 取消显示行号 |
在末行模式下的搜寻与取代快捷键:
快捷键 | 含义 |
/word | 在光标以下寻找名为word的字符串 |
?word | 在光标以上寻找名为word的字符串 |
n | 重复前一个搜寻动作,例如刚刚是使用:/word,找到第一个word后,按下n就会向下找第二个word,且高亮显示 |
N | 这个快捷键刚好了n相反,反向搜寻 |
:n1,n2s/word1/word2/g | n1和n2代表数字,规定在n1和n2之间寻找word关键词,找到后将word1换成word这个关键词,例子:在0-100行寻找name关键词,替换成NAME,则: :100,200s/name/NAME/g |
:1,$s/word1/word2/g | 这个命令和上面很相似,就是不指定行号,直接在整个档案找关键词,然后替换 |
:1,$s/word1/word2/gc | ($,代表最后一行)从第一行到最后一行寻找word1关键词,并将该字符串取代为word2,且取代前显示提示字符给用户确认是否取代,交互式 |
例子1:
把、/etc 下的hosts档案复制到。/test 文件夹下,然后使用vim编辑器打开:
使用vim编辑器打开hosts档案
注意:在一般模式是可以通过命令进行删除、复制、粘贴等等的动作,但即使无法通过键盘输入数据。
在一般模式中可以进行删除、复制、粘贴等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母后后才会进入编辑模式,在这个模式,可以编辑档案的内容。这几个字母的意思如上表格所述:
按键盘键:i,从光标处插入:
在插入模式之后,就可以使用键盘来输入数据啦,按下键盘的任意一个键都会被捕获到数据区里面去
当你修改完之后,可以选择保存或者取消保存,或者另存为等等的动作,我们要进行这个动作之前,必须要进去末行模式或尾行模式:
注意:想要从从编辑模式进入末行模式,必须先退出编辑模式,回到一般模式,因为如果你在编辑模式,无论你按什么按键都是会被系统所捕获,所以如果在编辑模式,按ESC按键先退出编辑模式(插入模式),然后从一般模式,进入到末行模式。
在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,都可以进入末行模式。
1.使用冒号:进入末行模式,可以进行保存退出等动作和替换、定位。
2.使用斜杠 / 进入末行模式,可以进行查找
例子2:
使用冒号 : 进入末行模式,在一般模式下,按Shift + : 进入末行模式,然后保存这个档案,使用命令:w,代表保存,w!:代表强制保存,wq:代表保存后退出,wq!:强制保存退出。
3.档案编辑快捷键的使用实例
例子3:综合例子
新建一个档案,testfile,然后使用vim编辑器进行编辑,前进去插入模式,打上字符,hello to my beatiful world ,my friend!
,然后按下ESC回到一般模式,使用快捷键 yy 进行复制,使用 p进行粘贴,然后进入末行模式,使用快捷键 w 保存修改
写入数据并保存
让这个文本显示行号,在末行模式中,使用命令:set nu ,取消行号选择:set nonu
注意:这些行号不是数据的一部分,只是暂时显示
在末行模式进行文本替换,比如把,testfile档案的,friend换成,FRIENDS,怎么做?只替换从第一行到第10行的数据
:n1,n2s/word1/word2/g | n1和n2代表数字,规定在n1和n2之间寻找word关键词,找到后将word1换成word这个关键词,例子:在0-100行寻找name关键词,替换成NAME,则: :100,200s/name/NAME/g |
使用命令:1,10s/friend/FRIEND/g
如果在替换之前有一个确认怎么做?只需在g后面的参数加一个c,现在修改第11-15行的friend换成,FRIENDS,并且询问是否替换:
使用命令:11,15s/friend/FRIEND/gc
这里有一个小技巧,如果删除所有的关键字FRIENDS呢?
使用命令:1,$s/FRIENDS//g ,意思把FRIENDS替换成空字符。
如果删除后保留空格的话,使用命令:1,$s/FRIENDS/ /g 就可以了。
例子4:注释档案
从光标开始的一行到最后一行都进行注释,那就是得在当前行到最后一行的开始的地方加入 "#" 字符:
使用命令:.,$s/^/#/g
解释:"." 代表是当前行,$代表是最后一行,"^"代表是行首,
那如何取消注释,那把 # 字符替换成空字符就可以了:
使用命令:.,$s/#//g
注意:现在上面这样写好像是没什么问题,但是如果后面还有#字符的话也会被替换掉的,为了稳妥,应该这样做:
使用命令:.,$s/^#//g ,表示开头是#的那个字符
4.区块选择(Visual Block)
前面的编辑方式几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢,比如下面的档案,只想复制my friend这一块呢?
这时就要用到区块选择的功能了,使用快捷键, v 或者 V 或者 [Ctrl]+v 时, 这个时候光标移的过癿地方就会开始反白,代表选中
各快捷键的含义:
快捷键 | 含义 |
v | 字符选择,会将光标经过的地方反白选择 |
V | 行选择,会将光标经过的行反白选择 |
Ctrl + v | 区块选择,可以使用按键上下左右移动选择区块 |
y | 将反白的地方复制 |
d | 将反白的地方删除 |
例子:
此时移动键盘的,上下左右键可以自由选择,选中如下如:
然后使用快捷键,y,将区块复制起来,然后使用键盘一定光标都最后一行使用快捷键,p,进行粘贴
5.多档案编辑
vim 后面可以跟多个档案,同时打开多个档案,然后使用命令去切换你想修改的档案就可以了。
多档案编辑快捷键:
快捷键 | 含义 |
:n | 编辑下一个档案 |
:N | 编辑上一个档案 |
:files | 列出当前vim开启的档案的列表 |
例子:
打开testfile 和 hosts这两个文件:
使用命令:vim testfile hosts
默认进去第一个文件,testfile这个档案:
编辑下一个档案,切换到末行模式,输入:n ,后回车
查看vim打开的档案列表:
切换到末行模式,输入:files ,后回车
提示:有了多文件编辑,就可以在多个文件进行复制和粘贴,例子,在testfile这个复制几行字符,然后切换到hosts这个档案,把光标移动到合适的位置,使用快捷键p就可以进行复制了。
6.多窗口功能
当你编辑一个档案很长,一个屏幕显示不下的时候,此时可以使用vim编辑器的分屏功能
多窗口功能下的快捷键
快捷键 | 含义 |
:sp[filename] | 开启一个新的窗口,如果加了filename,表示在新的窗口开启一个新的档案,否则表示两个窗口都是同一个档案,同步显示 |
Ctrl + w + j Ctrl + w + ↓ | 光标移动到下一个窗口,可以在下一个窗口进行编辑动作,方法:先按住 Ctrl 不放,再按下 w 键后放开Ctrl,然后再按 j 或者是 ↓ 的按键 |
Ctrl + w + k Ctrl + w + ↑ | 和上面一个是相反的 |
Ctrl + w + q | 结束此时编辑的窗口 |
例子:
复制:/etc 目录下的 services这个档案到 、/test 下,然后用vim编辑器打开,可以看到,这个档案很长,一个屏幕显示不下,可以通过,set nu 显示行号:
此时进入末行模式,输入 sp 回车:
一个档案就分屏了,显示的是同一份档案:
如果你想编辑下一个窗口,使用快捷键Ctrl + w + ↓ 或 Ctrl + w + j 跳到下个窗口:
结束这个窗口,使用快捷键:Ctrl + w + q。
注意用法:先按住Ctrl + w ,然后放开,再按q 就退出了这个窗口了。
7.vim环境设定与记录: ~/.vimrc, ~/.viminfo
我们可以发现当我们编辑一次文档保存退出后,当下一次回到这个档案的时候,还是保存上一次离开时的状态,比如,我们光标的位置、反白的内容等,为什么呢?
这是因为我们的 vim 会主动的将你曾经做过的行为登录下来, 那个记录动作的档案就是: ~/.viminfo !如果你曾经使用过 vim, 那你癿家目录应该会存在这个档案才对。这个档案是自动产生的, 你不必自行建立。而你在 vim 里面所做过癿动作,就可以在这个档案内部查询到。
每个 distributions 对 vim 的预设环境都不太相同,举例来说,某些版本在搜寻到关键词时并不会高亮度反白, 有些版本则会主动的帮你进行缩排的行为。但这些其实都可以自行设定的,那就是vim 的环境设定。如果想知道目前的设定可以通过末行模式下输入命令:set all 进行查阅
例子:
查看一下当前vim的环境设定,可以发现这些环境变量有很多。q键退出查看