在Linux,Unix服务端应用的时候,往往是没有图形化界面的使用命令行这种方式,这就存在没有图形化界面如何编写脚本和修改配置文件,这里有许多非文本编辑器的选择。
Vim/vi简介
Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/Unix上最常使用的文本编辑器,它的作用是建立,编辑,显示文本文件。Vim/Vi 没有菜单,只有命令。
vi最常用的两个操作:(1)编辑文本文件,主要是系统的配置文件。(2)写一些脚本。主要是shell脚本。
要想简单使用vi,下面的图片里面内容就够了。
vi有三种工作模式 一种命令模式 一种插入模式 一种编辑模式。
在缺省进入vi,使用vi编辑或者创建一个文件的时候,缺省进入的是一个命令模式,换句话说从键盘上面做任何的输入系统都会将其当做一个命令来处理,当输入相应的插入命令以后,会进入插入模式,这个时候就像我们使用记事本或者Word一样,可以输入想要键入的内容。在编辑模式可以对vi正在编辑的文档做一些额外相关的设置,包括保存退出,设置行号,查找等等,都可以在编辑模式下完成。
直接用vi加上这个文件名字就可以直接编辑这个文件,如果这个文件不存在,那么就可以创建并且编辑这个文件。
进入文件之后默认是在vim的命令模式下面。
进入编译器就按下i命令可以在文本当中插入想要插入的信息。如果要想保留文件一定要回到命令模式,要从命令模式进入到插入模式可以输入相应的插入模式的命令如 i a o,
在进行完文本的插入之后,要从插入模式到命令模式按esc键回到命令模式,最后输入:wq退出并且进行保存。
在命令模式可以直接进入编辑模式,在实际了应用里面可能会发生这样的事情,如一个配置文件第800行出现了错误要定位到该行,这时候可以使用编辑模式定位到某一行。编辑模式最大的特点就是每次写命令的时候都要加上:号后面接上命令。即冒号后面接上命令就是编辑模式。在编辑模式命令执行完毕之后就自动回到命令模式了。
5 #
6 # Remove leading # and set to the amount of RAM for the most important data
7 # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
8 # innodb_buffer_pool_size = 128M
9 #
10 # Remove leading # to turn on a very important data integrity option: logging
11 # changes to the binary log between backups.
12 # log_bin
13 #
14 # Remove leading # to set options mainly useful for reporting servers.
15 # The server defaults are faster for transactions and fast SELECTs.
16 # Adjust sizes as needed, experiment to find the optimal values.
17 # join_buffer_size = 128M
18 # sort_buffer_size = 2M
19 # read_rnd_buffer_size = 2M
20 datadir=/var/lib/mysql
21 socket=/var/lib/mysql/mysql.sock
22
23 # Disabling symbolic-links is recommended to prevent assorted security risks
24 symbolic-links=0
25
26 # Recommended in standard MySQL setup
27 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
28 log-bin
29
:set nu 在编辑模式下面输入set nu可以编辑行号。
为了使得vim使用的效率更加高效,可以使用下面几种命令
每次使用插入命令的时候要退出到命令模式之后在切换到其他插入模式,不可以在插入模式里面写插入命令。
这个是命令只有在vim命令模式下面才可以使用。
有两种定位的方式,第一种行号加上G,第2种冒号加上n行。
可以先使用:行 定位到该行之后使用dd命令删除该行。
需要修改的内容较少只需按下r之后敲上要替换的字符就可以将之前的字符替换了。有的时候修改文档的时候没有必要每次进入插入模式进行修改只要用r就行了。
如果要替换光标处后面的内容使用R,输入的内容会将覆盖之前的内容。
在做了一些操作不理想比如删除错了东西可以使用u取消上一步操作。如果一直用u那么就会一直返回上一步操作。只要没有保存文档这个恢复性的操作可以一直做。
在配置一个apache server,apache的配置文件很长,在配置文件查找某些选项的时候不可能一行一行往下翻,可以找选项匹配的关键词,使用/加上关键的字符串,就可以来进行查找。
先使用/要查找的关键字之后使用n键一直向下面查找指定的关键字。n从前面往后面找N反之。
在一些服务器的文件里面是区分大小写的,在Linux里面是严格区分大小写的,不管是命令选项或者是配置文件里面。都是严格区分大小写的。
如果要求查找关键字不区分大小写就使用:set ic 设置了之后使用 /关键字 ftp Ftp都会找到。
关闭忽略大小写:set noic
:%s/ftp/newftp/c
replace with newftp (y/n/a/q/l/^E/^Y)?
替换的时候如果要谨慎就使用c,觉得不需要询问就使用(g),替换之前会询问高亮的地方是否要被替换。如果全部替换使用ftp部分替换为newftp。
保存文件最常使用的命令就是:wq(write quite),也可以使用shift z z就可以保存退出了。
将所有者的权限改为只有读权限,此时再向文件里面写入东西再保存就会提出警告要使用:wq!才可以保存文件。但是这个是要有条件的,不是什么用户没有写权限都可以保存退出的。只有这个文件的所有者或者管理员root才可以没有写权限但是可以保存文件。在Linux里面有一个特殊的用户就是管理员很多制度的规则对管理员是没有效果的。管理员在编辑文件的时候即使没有写权限但是一样可以编辑文件。
不保存就是:q!(有的时候编辑文件结果并不理想不保存)
如果只保存不退出就使用:w。
存放到其他目录下面。:w /root/service.bak保存当前的文件,并且另存为service.bak文件。
vi里面还有许多有趣的用法。
vi里面可以导入其他文件的内容。
在使用vi进入一个文件后可以使用:r将其他文件的内容导入到当前Vi编辑的文件里面。
!命令 如果在vi编辑文本的过程当中想使用命令(非vi命令)就可以使用。不需要退出vi编辑器。如在使用vi编辑文本的过程当中可以使用ls -a查看所有的目录。:!ls -a /
这些命令执行完毕后会继续回到vi编辑模式下。
:r !可以一起使用
:r不仅可以导入一个文件的内容还可以导入一个命令执行的结果,但是这个需要!加上该命令才可以。
:r !date将当前日期导入到该文件。
连续注释行其实就是应用了替换的命令:%s/old/new/g。
:n1,n2s 在Vi里面表示连续行的一个范围。
/^ ^在vi里面表示行首。
在行首添加#号 :n1,n2s/^/#/g
:set nu可以为行编号.
32 #[mysqld_safe]
33 #log-error=/var/log/mysqld.log
34 pid-file=/var/run/mysqld/mysqld.pid
:32,33s/^/#/g
在行首删除#号
:n1,n2s/^#//g
替换为空就是删除。
32 //#[mysqld_safe]
33 //#log-error=/var/log/mysqld.log
34 pid-file=/var/run/mysqld/mysqld.pid
:32,33s/^/\/\//g \是转义符