linux下vim的使⽤(必看)
vi与vim
vi编辑器是所有Unix及系统下标准的编辑器,他就相当于系统中的记事本⼀样,它的强⼤不逊⾊于任何最新的⽂本编辑器。他是我们使⽤Linux系统不能缺少的⼯具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界⾥畅⾏⽆阻。vim 具有程序编辑的能⼒,可以以字体颜⾊辨别语法的正确性,⽅便程序设计;
因为程序简单,编辑速度相当快速。
vim可以当作vi的升级版本,他可以⽤多种颜⾊的⽅式来显⽰⼀些特殊的信息。
vim会依据⽂件扩展名或者是⽂件内的开头信息, 判断该⽂件的内容⽽⾃动的执⾏该程序的语法判断式,再以颜⾊来显⽰程序代码与⼀般信息。
vim⾥⾯加⼊了很多额外的功能,例如⽀持正则表达式的搜索、多⽂件编辑、块复制等等。 这对于我们在Linux上进⾏⼀些配置⽂件的修改⼯作时是很棒的功能。
为何要学 vi
所有的Unix Like系统都会内建vi⽂本编辑器,其他的⽂本编辑器则不⼀定会存在;
⼀些软件的编辑接⼝会主动调⽤vi (例如 crontab, visudo, edquota 等命令);
vi的使⽤
基本上vi可以分为三种状态,分别是⼀般模式、编辑模式和命令⾏模式,各模式的功能区分如下:
⼀般模式:
以vi打开⼀个⽂件就直接进⼊⼀般模式了(这是默认的模式)。在这个模式中, 你可以使⽤上下左右按键来移动光标,你可以使⽤删除字符或删除整⾏来处理⽂件内容, 也可以使⽤复制、粘贴来处理你的⽂件数据。
编辑模式:
在⼀般模式中可以进⾏删除、复制、粘贴等的操作,但是却⽆法编辑⽂件的内容,只有当到你按下【i, I, o, O, a, A, r, R】等任何⼀个字母之后才会进⼊编辑模式。这时候屏幕的左下⽅会出现【INSERT或 REPLACE】的字样,此时才可以进⾏编辑。⽽如果要回到⼀般模式时,则必须要按下【Esc】即可退出编辑模式。
命令⾏模式:
输⼊【 : / ? 】三个中的任何⼀个,就可以将光标移动到最底下那⼀⾏。在这个模式中, 可以提供查、读取、存盘、替换字符、离开vi、显⽰⾏号等的动作则是在此模式中完成的!
⼀般模式可⽤的按钮说明
移动光标
【h、j、k、l】,分别控制光标左、下、上、右移⼀格
按【ctrl+b】屏幕往"后"移动⼀页
按【ctrl+f】屏幕往"前"移动⼀页
【n<space>】光标向右移动n个字符
【Home】移动到这⼀⾏的最前⾯字符处:0数字,但不能⽤数字⼩键盘上的数字
【End】 移动到这⼀⾏的最后⾯字符处:$,我测试好像不⾏
【w】光标跳到下个字的开头
【e】光标跳到下个字的字尾
【H】 光标移动到这个屏幕的最上⽅那⼀⾏的第⼀个字符
【M】 光标移动到这个屏幕的中间那⼀⾏的第⼀个字符
【L】光标移动到这个屏幕的最下⽅那⼀⾏的第⼀个字符vim编辑器下载与安装
【G】 移动到这个⽂件的最后⼀⾏
【nG】移动到这个⽂件的第n⾏(可配合:set nu)
【gg】 移动到这个⽂件的第⼀⾏,相当于1G
【n<Enter>】光标向下移动n⾏
查与替换
【/word】 向光标向下寻⼀个名称为word的字符串
【?word】 向光标向上寻⼀个名称为word的字符串
【n】 代表重复前⼀个查的动作
【N】 与n刚好相反,为【反向】进⾏⾏前⼀个查动作
【:n1,n2s/word1/word2/g】 n1与n2为数字,在第n1与n2⾏之间查word1 这个字符串,并将该字符串替换为word2
【:1,$s/word1/word2/g】 从第⼀⾏到最后⼀⾏查word1字符串,并将该字符串替换为word2
【:1,$s/word1/word2/gc】 从第⼀⾏到最后⼀⾏查word1字符串,并将该字符串替换为word2 ,且在替换前提⽰⽤户确认是否进⾏替换
删除、复制与粘贴
【x】 为向后删除⼀个字符 (相当于【del】键)
【X】 为向前删除⼀个字符(相当于【backspace】键)
【nx】 连续向后删除n个字符
【dd】 删除光标所在⾏
【ndd】 删除光标所在的向下n⾏
【d1G】 删除光标所在⾏到第⼀⾏的所有数据
【dG】 删除光标所在到最后⼀⾏的所有数据
【d$】 删除光标所在处,到该⾏的最后⼀个字符
【d0】 删除光标所在处,到该⾏的最前⼀个字符
【yy】 复制光标所在的那⼀⾏
【nyy】 复制光标所在的向下n列
【y1G】 复制光标所在⾏到第⼀⾏的所有数据
【yG】 复制光标所在⾏到最后⼀⾏的所有数据
【y0】 复制光标所在的那个字符到该⾏⾏⾸的所有数据
【y$】 复制光标所在的那个字符到该⾏⾏尾的所有数据
【p】将已复制的数据在光标下⼀⾏粘贴上
【P】 则为贴在光标的上⼀⾏
【u】 恢复前⼀个操作
【Ctrl+r】重做上⼀个操作
【.】 是重复前⼀个操作
⼀般模式切换到编辑模式的可⽤的按钮说明
【i, I】 进⼊编辑模式:
i 为【从⽬前光标所在处插⼊】
I 为【在⽬前所在⾏的第⼀个⾮空格符处开始插⼊】
【a, A】 进⼊编辑模式(Insert mode):
a 为【从⽬前光标所在的下⼀个字符处开始插⼊】
A 为【从光标所在⾏的最后⼀个字符处开始插⼊】
【o, O】 进⼊编辑模式:
o 为【在⽬前光标所在的下⼀⾏处插⼊新的⼀⾏】
O 为在⽬前光标所在处的上⼀⾏插⼊新的⼀⾏
【r, R】 进⼊取代模式:
r 只会取代光标所在的那⼀个字符⼀次
R会⼀直取代光标所在的⽂字,直到按下 ESC 为⽌;
【Esc】 退出编辑模式,回到⼀般模式
⼀般模式切换到命令⾏模式可⽤的按钮说明
【:w】 保存编辑的内容
【:w!】强制写⼊该⽂件,但跟你对该⽂件的权限有关
【:q】 离开vi
【:q!】 不想保存修改强制离开
【:wq】 保存后离开
【:x】 保存后离开
【ZZ】 若⽂件没有更动,则不保存离开,若⽂件已经被更改过,则保存后离开
【:w filename】 将编辑的数据保存成另⼀个⽂件(类似另存)
【:r filename】 在编辑的数据中,读⼊另⼀个⽂件的数据。即将【filename】 这个⽂件的内容加到光标所在⾏后⾯。
【:n1,n2 w filename】 将n1到n2的内容保存成filename这个⽂件。
【:! command】暂时离开vi 到命令⾏模式下执⾏command的显⽰结果!例如 【:! ls /home】即可在 vi 当中察看/home底下以ls输出的⽂件信息!
【:set nu】 显⽰⾏号
【:set nonu】 与 set nu 相反,为取消⾏
vim的缓存⽂件、恢复与开启时的警告信息
我们知道⼀些常⽤的编辑软件,都有个恢复的功能,就是说当你的系统因为某些原因⽽导致类似当机的情况时,还可以利⽤这个恢复功能将之前未保存的数据回来。我们的VIM也有这个功能。
当我们在使⽤vim编辑时,vim会在与被编辑的⽂件的⽬录下,再建⽴⼀个名为 .filename.swp的⽂件。如果你的系统因为某些原因断线了, 导致你编辑的⽂件还没有保存,这个时候 .filenam.swp 就能够发会救援的功能了。
我们来演⽰⼀下
fig
ctrl+z放到后台执⾏
我们停⽌VI的进程
⼀种⽅法
ps aux |grep vi
kill -9 n
另外⼀种⽅法
jobs
kill -9 %1
我们⽤ls -l 命令来查看⼀下⽬录⾥⾯,会发现有个.fig.swp的⽂件,这个⽂件就是个缓存的⽂件
我们再来编辑
fig
这时候会出现⼀些信息
问题⼀:可能有其他⼈或程序同时在编辑这个⽂件:
问题⼆:在前⼀个vim的环境中,可能因为某些不知名原因导致vim中断 (crashed):
右下⾓会出现六个命令项,其作⽤说明如下:
(O)pen Read-Only:打开此⽂件成为只读档, 可以⽤在你只是想要查阅该⽂件内容并不想要进⾏编辑⾏为时。⼀般来说,在上课时,如果你是登⼊到同学的计算机去看他的配置⽂件, 结果发现其实同学他⾃⼰也在编辑时,可以使⽤这个模式;
(E)dit anyway:还是⽤正常的⽅式打开你要编辑的那个⽂件, 并不会载⼊暂存盘的内容。如果说两个⼈都在编辑这个⽂件的话,很容易出现互相改变对⽅的⽂件等问题。
(R)ecover:就是加载暂存盘的内容,⽤在你要救回之前未保存的⼯作。 不过当你救回来并且储存离开vim后,还是要⼿动⾃⾏删除那个暂存档。
(D)elete it:你确定那个暂存档是⽆⽤的!那么开启⽂件前会先将这个暂存盘删除
(Q)uit:按下 q 就离开vim,不会进⾏任何动作回到命令提⽰字符。
(A)bort:忽略这个编辑⾏为,感觉上与 quit ⾮常类似!
vim的功能
其实,⽬前⼤部分的Linux发⾏版本都以vim取代了vi。为什么要⽤vim呢?因为vim具有颜⾊显⽰的功能,并且还⽀持许多的程序语法(syntax)和相应的提⽰信息。查看⾃⼰的VI是不是被VIM代替,可以⽤
alias这个命令来查看是不是有alias vi=’vim’这⼀⾏。
块选择
【v】字符选择,会将光标经过的地⽅反⽩选择
【V】 ⾏选择,会将光标经过的⾏反⽩选择
【Ctrl+v】 块选择,可以⽤长⽅形的⽅式选择资料 (提制竖列)
【y】 将反⽩的地⽅复制
【d】 将反⽩的地⽅删除
多⽂件编辑
⼤家在使⽤vim的时候,可能会碰到你需要复制⼀个⽂件中的某段到另外⼀个⽂件中,⽽vim不能够在关闭的时候,把这段保留住。或者是⽤其它的⽅法复制。
【vim file1 file2】
【:n】编辑下⼀个⽂件
【:N】编辑上⼀个⽂件
【:files】列出⽬前这个vim编辑的所有⽂件
多窗⼝功能
有两个需要对照着看的⽂件
【:sp filename】开启⼀个新窗⼝,如果有加 filename, 表⽰在新窗⼝开启⼀个新⽂件,否则表⽰两个窗⼝为同⼀个⽂件内容(同步显⽰)。
【ctrl+w+j】
【ctrl+w+↓】按键的按法是:先按下 【ctrl】 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下箭头键),则光标可移动到下⽅的窗⼝。
【ctrl+w+k】
【ctrl+w+↑】同上,不过光标移动到上⾯的窗⼝。
vim 环境设定与记录(~/.vimrc, ~/.viminfo)
如果我们以vim软件来查⼀个⽂件内部的某个字符串时,这个字符串会被反⽩, ⽽下次我们再次以vim编辑这个⽂件时,该查的字符串反⽩情况还是存在。另外,当我们重复编辑同⼀个⽂件时,当第⼆次进⼊该⽂件时, 光标竟然就在上次离开的那⼀⾏的开头。这个功能可能是⽅便,但也有不⽅便的时候。怎么会这样呢?这是因为我们的vim会主动的将你曾经做过的⾏为登录下来,那个记录动作的⽂件就是:~/.viminfo,不想⽤这个功能,就直接删除~/.viminfo。只要你曾经使⽤过vim,那么你的家⽬录就会有这个⽂件。这个⽂件是⾃动产⽣的,你在vim⾥头所做过的动作,就可以在这个⽂件内部到。有兴趣的朋友可以⾃⼰查看⽂件⾥⾯的内容。
不过,对于每个不同的发⾏版本对vim的预设环境都不太相同。举例来说,某些版本在查到关键词时并不会⾼亮度反⽩, 有些版本则会主动的帮你进⾏缩排(所谓的缩排,就是当你按下 Enter 编辑新的⼀⾏时,光标不会在⾏⾸,⽽是在与上⼀⾏的第⼀个⾮空格符处对齐)的⾏为。其实这些都可以⾃⾏设定的,下⾯我们就来看看vim的环境设定。
vim的环境设定参数有很多,如果你想要知道⽬前的设定值,可以在⼀般模式时输⼊【 :set all】来查阅,由于设定项⽬实在太多了,我们在这⾥就仅列出⼀些平时⽐较常⽤的⼀些简单的设定值,给⼤家
提供参考。
:set all "显⽰⽬前所有的环境参数设定值
:set hlsearch "⾼亮度反⽩(⾼亮度搜寻)
:set nohlsearch "取消⾼亮度反⽩(⾼亮度搜寻)
:set backspace=2 "在编辑的时候可随时⽤退格键删除 (0、1的时候,只针对刚输⼊的字符有效)
:set autoindent "⾃动缩排
:set noautoindent "取消⾃动缩排
:set ruler "可显⽰最后⼀⾏的状态
:set showmode "左下⾓那⼀⾏的状态
:set nu "显⽰⾏号
:set nonu "取消⾏号
:
set bg=dark "显⽰不同的底⾊⾊调
:syntax on "进⾏语法检验,颜⾊显⽰
:syntax off "关闭语法检验
了解完上⾯的内容后,下⾯我们就能写⼀下⾃⼰的vim操作环境。
整体vim的设定值⼀般是置在/etc/vimrc这个⽂件⾥⾯,不建议⼤家来修改他。我们在⾃⼰的家⽬录⾥⾯建⽴个.vimrc⽂件,在这⾥⾯写⼊⾃⼰的内容就能实现了。
[root@yufei ~]# vim ~/.vimrc
内容如下
set hlsearch "⾼亮度反⽩
set backspace=2 "可随时⽤退格键删除
set autoindent "⾃动缩排
set ruler "可显⽰最后⼀⾏的状态
set showmode "左下⾓那⼀⾏的状态
set nu "可以在每⼀⾏的最前⾯显⽰⾏号
set bg=dark "显⽰不同的底⾊⾊调
syntax on "进⾏语法检验,颜⾊显⽰
"这个⽂件的双引号 (")表⽰的是注释
保存退出vim后,在下次使⽤vim的时候,就会有⾃⼰的vim操作环境了。
提醒⼀点,这个⽂件中每⼀⾏前⾯加不加【:】效果都是⼀样的。
最后,给也⼏张不错的图,帮助⼤家更快的来掌握vi/vim,记住⼀点,不要死记,重在操作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论