vim程序编辑器

在所有的Linux  distributions 上头都会有的一套文书编辑器就是vi,而且很多软件默认也是使用vi做为他们编辑的接口,因此建议您务必要学会使用vi 这个正规的文书编辑器。此外,vim是进阶版的 vi,vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell  script, C  program等程序编辑功能,你可以将vim视为一种程序编辑器!

一、vim的使用

基本上 vi共分为三种模式,分别是“一般指令模式”、“编辑模式”与“命令行命令模式”。这三种模式的作用分别是:

  • 一般指令模式(command   mode)

以vim打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中,你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容,也可以使用“复制、贴上”来处理你的文件数据。

  • 编辑模式(insert   mode)

在一般指令模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的!要等到你按下“i,    I,    o,    O,    a,    A,    r,    R”等任何一个字母之后才会进入编辑模式。注意了!通常在Linux中,按下这些按键时,在画面的左下方会出现“    INSERT    或    REPLACE    ”的字样,此时才可以进行编辑。而如果要回到一般指令模式时,则必须要按下“Esc”这个按键即可退出编辑模式。

  • 命令行命令模式(command-line  mode)

在一般模式当中,输入“    :    /    ?    ”三个中的任何一个按钮,就可以将光标移动到最下面那一列。在这个模式当中,可以提供你“搜寻数据”的动作,而读取、存盘、大量取代字符、离开vim 、显示行号等等的动作则是在此模式中达成的!

1.1 vim 的简单操作
  • 打开/创建文件:使用“ vim    filename”进入一般指令模式,若filename是已存在的文件,则打开该文件;若filename不存在,则自动创建该文件。此时,处于一般指令模式。
  • 进入编辑模式:在一般指令模式之中,只要按下 i, o, a 等字符就可以进入编辑模式。
  • 返回一般指令模式:按下[ESC]按钮回到一般指令模式;
  • 退出vim环境:进入命令行界面,输入“:wq”即可存盘离开 vim 环境。
1.2 一般指令模式下常用的按钮操作,包括光标移动、复制粘贴、搜寻取代等
1.2.1 移动光标的常用快捷键
h或向左方向键(←)光标向左移动一个字符
j 或向下方向键(↓)(30j或30↓)光标向下移动一个字符/行(向下移动30行)
k或向上方向键(↑)(30k或30↑)光标向上移动一个字符/行(向上移动30行)
l 或 向右方向键(→)光标向右移动一个字符
[Ctrl] + [f]屏幕“向下”移动一页,相当于[Page  Down]按键 
[Ctrl] +[b]屏幕“向上”移动一页,相当于[Page  Up]按键 
0或功能键[Home]这是数字“ 0”:移动到这一列的最前面字符处
$ 或功能键[End]移动到这一列的最后面字符处
G移动到这个文件的最后一列
gg移动到这个文件的第一列,相当于1G啊!
nGn为数字。移动到这个文件的第 n 列。
n<Enter>n 为数字。光标向下移动 n 列
1.2.2 搜寻查找的常用快捷键
/word                                        向光标之下寻找一个名称为 word的字串。
n或N这个n或N是英文按键。n代表“<u>重复前一个搜寻的动作</u>”。N代表反向“<u>重复前一个搜寻的动作</u>”
:n1,n2s/word1/word2/gn1与 n2为数字。在第n1与n2列之间寻找word1 这个字串,并将该字串取代为word2
:1,$s/word1/word2/g从第一列到最后一列寻找word1字串,并将该字串取代为word2
:1,$s/word1/word2/gc

从第一列到最后一列寻找word1字串,并将该字串取代为word2!且在取代前显示提示字符给使用者确认(confirm)是否需要取代!

1.2.3 删除、复制粘贴的常用快捷键

x,  X                          在一列字当中,x为向后删除一个字符(相当于[del] 按键),X为向前删除一个字符(相当于[backspace]亦即是倒退键)
dd或ndddd:删除光标所在的那一整列;ndd:。删除光标所在的向下n列,其中n是数字
yy或nyyyy复制光标所在的那一列;nyy:复制光标所在的向下 n 列,其中n是数字
p, Pp 为将已复制的数据在光标一列贴上,P则为贴在光标一列!
u复原前一个动作。
[Ctrl]+r重做上一个动作。
.这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点“.”就好了!  
1.3 一般指令模式切换到编辑模式的可用的按钮说明

特别注意的是,我们上面也提过了,你想要在文件里面输入字符时,一定要在左下角处看到INSERT或REPLACE 才能输入!

i,I              进入插入模式(Insert mode):i为“从目前光标所在处插入”, I为“在目前所在列的第一个非空白字符处开始插入”。  
a,A进入插入模式(Insert mode):a为“从目前光标所在的下一个字符处开始插入”,A 为“从光标所在列的最后一个字符处开始插入”。
o,O进入插入模式(Insert    mode):这是英文字母o 的大小写。o为“在目前光标所在的下一列处插入新的一列”;O 为在目前光标所
在处的上一列插入新的一列!
r,R进入取代模式(Replacemode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下ESC为止;
[Esc]退出编辑模式,回到一般指令模式中
1.4 一般指令模式切换到命令行界面的可用按钮说明
:w将编辑的数据写入硬盘文件中
:q离开 vim
:q!

若曾修改过文件,又不想储存,使用 ! 为强制离开不储存盘。

注意一下啊,那个惊叹号(!)在vim当中,常常具有“强制”的意思

:wq储存后离开,若为    :wq!    则为强制储存后离开   
:w [filename]将编辑的数据储存成另一个文件(类似另存新文件)
:set    nu显示行号,设置之后,会在每一列的字首显示该列的行号
:set    nonu与set  nu相反,为取消行号!

二、 vim的暂存盘、救援回复与打开时的警告讯息

在目前主要的文书编辑软件都会有“回复”的功能,亦即当你的系统因为某些原因而导致类似死机的情况时,还可以通过某些特别的机制来让你将之前未储存的数据“救”回来! vim就是通过“暂存盘”来救援的啦!当我们在使用 vim编辑时,vim会在与被编辑的文件的目录下,再创建一个名为.filename.swp的文件。如果你的系统因为某些原因断线了, 导致你编辑的文件还没有储存,这个时候.filename.swp 就能够发挥救援的功能了。

例如:当你vim  man_db.conf时,出现如下提示:


则有两种可能:

1.  可能有其他人或程序同时在编辑这个文件:
  • 由于Linux是多用户多任务的环境,因此很可能有很多人同时在编辑同一个文件。如果在多人共同编辑的情况下,万一大家同时储存,那么这个文件的内容将会变的乱七八糟!为了避免这个问题,因此vim会出现这个警告窗口!解决的方法则是:找到另外那个程序或人员,请他将该    vim    的工作结束,然后你再继续处理。
  • 如果你只是要看该文件的内容并不会有任何修改编辑的行为,那么可以选择打开成为只读(O)文件,亦即上述画面反白部分输入英文“o ”即可,其实就是[O]pen Read-Only 的选项啦!
2.  在前一个    vim    的环境中,可能因为某些不知名原因导致vim中断(crashed):

这就是常见的不正常结束    vim    产生的后果。解决方案依据不同的情况而不同喔!常见的处理方法为:

  • 如果你之前的vim 处理动作尚未储存,此时你应该要按下“R”,亦即使用(R)ecover 的项目,此时vim会载入    .man_db.conf.swp的内容,让你自己来决定要不要储存!这样就能够救回来你之前未储存的工作。不过那个    .man_db.conf.swp并不会在你结束vim后自动删除,所以你离开vim后还得要自行删除.man_db.conf.swp才能避免每次打开这个文件都会出现这样的警告!
  • 如果你确定这个暂存盘是没有用的,那么你可以直接按下“D”删除掉这个暂存盘,亦即(D)elete  it 这个项目即可。此时vim会载入 man_db.conf ,并且将旧的.man_db.conf.swp    删除后,创建这次会使用的新的 .man_db.conf.swp喔!

至于这个发现暂存盘警告讯息的画面中,有出现六个可用按钮,各按钮的说明如下:

  • [O]pen Read-Only:打开此文件成为只读文件,可以用在你只是想要查阅该文件内容并不想要进行编辑行为时。一般来说,在上课时,如果你是登陆到同学的计算机去看他的配置文件,结果发现其实同学他自己也在编辑时,可以使用这个模式;
  • (E)dit  anyway:还是用正常的方式打开你要编辑的那个文件,并不会载入暂存盘的内容。不过很容易出现两个使用者互相改变对方的文件等问题!不好不好!
  • (R)ecover:就是载入暂存盘的内容,用在你要救回之前未储存的工作。不过当你救回来并且储存离开 vim 后,还是要手动自行删除那个暂存盘喔!
  • (D)elete  it:你确定那个暂存盘是无用的!那么打开文件前会先将这个暂存盘删除!这个动作其实是比较常做的!因为你可能不确定这个暂存盘是怎么来的,所以就删除掉他吧!
  • (Q)uit:按下q就离开 vim,不会进行任何动作回到命令提示字符。
  • (A)bort:忽略这个编辑行为,感觉上与quit非常类似!也会送你回到命令提示字符!

三、vim的额外功能(多文件编辑功能+多窗口功能+挑字补全功能)

多文件编辑功能:同一窗口,多个文件,通过:n查看下一个文件,:N查看上一个文件
vim file1 file2 file3 ...一次性查看多个文件,窗口下只有一个文件

多窗口功能:

(同一屏幕,多个窗口)

通过[ctrl ]+ ww 切换窗口,[ctrl]+w+q结束当前窗口:

[ctrl]+w+j 或向下方向键(↓)为移到下方的窗口;[ctrl]+w+k或向上方向键(↑)为移到上方的窗口

vim -o file1 file2 file3 ...水平分隔,即分隔线是水平的!
水平分隔多个文件的另一种方式首先vim file1 ;然后:sp file2  ; 在继续 :sp file3       [sp即split的简写,两者皆可被识别]
垂直分隔多个文件的方式首先vim file1 ;然后:vsp file2  ; 在继续 :vsp file3   [vsp即vertical split的简写]
挑字补全功能:[ctrl]+x -> [ctrl]+n即先按[ctrl]+x,再按[ctrl]+n
[ctrl]+x -> [ctrl]+n通过目前正在编辑的这个“文件的内容文字”作为关键字,予以补齐
[ctrl]+x -> [ctrl]+f以当前目录内的“文件名”作为关键字,予以补齐
[ctrl]+x -> [ctrl]+o以扩展名作为语法补充,以vim内置的关键字,予以补齐

四、 vim环境设置与记录:~/.vimrc , ~/.viminfo

  • ~/.viminfo文件:vim会主动的将你曾经做过的行为登录下来,好让你下次可以轻松的作业!那个记录动作的文件就是: ~/.viminfo !如果你曾经使用过vim,那你的主文件夹应该会存在这个文件才对。这个文件是自动产生的,你不必自行创建。而你在 vim里头所做过的动作,就可以在这个文件内部查询到。
  • ~/.vimrc 文件:整体vim的设置值一般是放置在/etc/vimrc这个文件,你可以修改 ~/.vimrc这个文件(默认不存在,请你自行手动创建)。将你所希望的设置值写入。

例如下图所示:


尤其注意中文编码问题!!!!!

若vim某文件打开乱码,则考虑以下三个方面:

  1. 该文件原本的中文编码
  2. 打开终端机的软件的编码设置
  3. vim 环境设置中的编码设置

要求以上第2,3点与1一致!!!!!若直接查看某文件时,则要求2和1一致!!!!

vim环境设置方法,如下图所示,此时设置的编码格式是gbk:


五、DOS与Linux 的断行字符

DOS 使用的断行字符为^M$,我们称为CR与LF 两个符号。而在Linux 下面,则是仅有LF($) 这个断行符号。这个断行符号对于Linux的影响很大。在 Linux下面的指令在开始执行时,他的判断依据是“Enter”,而 Linux 的Enter为 LF符号,不过,由于DOS的断行符号是CRLF,也就是多了一个^M 的符号出来,在这样的情况下,如果是一个shell script的程序文件,将可能造成“程序无法执行”的状态。因为他会误判程序所下达的指令内容啊!

因此,DOS和Linux的文件进行转换时的命令:(ps:这是直接在原文件上更改的,直接覆盖原文件)

  • 将DOS文件转换成Linux文件:dos2unix  dos_file
  • 将Linux文件转换成DOS文件:unix2dos  linux_file

六、编码转换

编码转换命令说明:


若在进行编码时,出现报错说:存在非法序列,这是因为原文件中存在新编码无法识别(即不能转换)的字符,有可能该字符不存在于该编码中。此时,可以将上述命令如下更改:

  • iconv   -c  -f    原本编码    -t    新编码    filename    [-o    newfile]
-c  :忽略非法字符!!!!!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值