第十章:vim程序编辑器

来源:互联网 发布:itunes软件安装目录 编辑:程序博客网 时间:2024/05/18 08:29

vi 文本编辑器 vim是高级的vi

一、vi与vim

1.1、为什么要学vim

  1. 很多Unix Like都内置了vi + 很多程序编辑软件都会调用vi + vi具有程序编辑能力
  2. vi 是文本编辑器 vim是高级的vi,可以是一个程序开发工具
  3. vim很根据文件扩展名或者文件内的开头信息自动调用该程序的语法判别式。

1.2、vi的使用

  1. vi共有三种模式:一般模式、编辑模式、命令行模式
    1、一般模式:用vi打开一个文件就进入一般模式了(默认的模式)
    2、编辑模式
    3、命令行模式:一般模式下输入“: / ?”三个中的一个进入命令韩模式

  2. 三种模式的转换关系
    这里写图片描述

  3. 编辑模式与命令行模式不能直接切换

2.1、简单执行范例

  1. 使用vi进入一般模式
    1、vi test.txt:新建(打开)文件test.txt
  2. i进入编辑模式
  3. ESC从编辑模式进入一般模式
  4. 一般模式输入:wq保存后离开vi,强制写入wq!

2.2、按键说明

  1. 一般模式可用的按键说明:P278,以下为常用的按键
    1、ctrl + f == page down、ctrl + b == page up
    2、0==home、$ == end
    3、G:移动到文件的最后一行、gg:移动到文件的第一行
    4、/?word:向下(上)查找关键字word,n/N为重复查找上一次的/?
    5、:1,¥s/word1/word2/g(c):全文替换(显示确认)
    6、xX:向后/向前删除一个字符
    7、dd:删除贯标所在的一行,n(数字)dd,同理yy是复制,nyy
    8、pP:在光标的下一行/上一行粘贴
    9、u:复原前一个操作,即撤销,Ctrl + r:重复上一个操作
  2. 一般模式切换到编辑模式
    1、i I/a A/o O:进入插入模式
    2、r R:进入替换模式
  3. 一般模式切换到命令行模式
    1、:w:写入(保存),w!:强制写入
    2、:q:离开vi(不保存),:q!也不保存
    3、:wq:保存后离开,:wq!:强制保存后离开
    4、:w 文件名:另存为

2.4、vim的保存文件、回复与打开时的警告信息

  1. 使用vim编辑文件的时候,会自动创建一个.filename.swp的暂存文件用于数据恢复。
  2. 例如在用vim编辑文件时非法断电了,在此vi打开该文件会有相应的提示信息:
    1、可能有多个用户同时在编辑该文件
    2、vim直接crash,该问题常见的处理方法为:按R(recover)键载入.filename.swp暂存文件进行数据恢复,恢复后按D(delete)手动删除该暂存文件。
    3、对暂存文件的其它操作:
    ①、O(open read-only):打开并只读
    ②、E(edit anyway):正常打开该文件 并且编辑
    ③、R
    ④、D
    ⑤、Q(quit):离开
    ⑥、A(abort):忽略这个信息,与Q类似

三、vim的功能

  1. 大部分的distributions中vi都被vim替代了,alias中vim=vi,即运行vi即是运行vim,vim添加了颜色显示功能,并且支持很多程序语法

3.1、块选择(visual block)

  1. 对块进行操作:v字符选择、V行选择、Ctrl + v块选择、y复制选择(反白)部分、d删除

3.2、多文本编辑

  1. :n、:N、:files:编辑下一个文件、编辑上一个文件、列出vim编辑的所有文件

3.3、多窗口功能

  1. 将一个文件切割成多个窗口进行展示:sp filename,如果没filename则切割打开的文件、如果有filename,则多窗口显示本文件和filename
  2. ctrl + w + j/下箭头(k/上箭头):(前两个键先按,后一个键松开前两个键再按)光标移动到下方/上方的窗口。
  3. ctrl + w + q:结束窗口

3.4、vim环境设置与记录

  1. vim会将用户的相关操作记录下来(例如有些distribution在查找字符反白后,下次编辑还会反白 + 光标定位在上一次退出的位置),对应的文件为~/.viminfo,使用vim会自动产生
  2. 设置vim编辑器的相关文件/etc/vimrc,但是不建议修改。

四、vim使用的注意事项

4.1、中文乱码问题

4.2、Dos与Linux的断行字符
1、两者的断行字符不一样(换行?),解决方法,进行格式转换,使用UNIX2dos或dos2UNIX进行转换。

4.3、语系编码的转换

  1. 语系编码的转换,例如将big5编码转换成utf8,。可以使用iconv这个命令
0 0