[TOC] # VIM基础 在Linux系统上最常用的就是VIM编辑器,它除支持Linux外还支持Mac和Windows。VIM分为三种使用模式,分别为: * 输入模式:在命令模式下输入(i,a,A等),可以进入输入模式 * 命令模式 (默认):任何输入都会作为编辑命令,而不会出现屏幕上,若输入错误则有声音提示 * 特殊模式:以“:”或者“/”为前导指令,出现屏幕的最下一行,任何输入当作命令执行。 ## 命令模式 | 命令 | 输入方法 | | --- | --- | | **进入输入的方法** | | a | 在光标后面输入文本 | | A | 在当行的末尾输入文本 | | i | 在光标后输入文本 | | I | 在当前行输入文本 | | o | 在当前行输入新一行 | | O | 在当前行前输入新一行 | | **光标移动的方法** | | b | 移动到当前单词开始 | | e | 移动到当前单词尾开始 | | w | 向前移动一个单词 | | h | 向前移动一个字符 | | j | 向上移动一行 | | k | 向下移动一行 | | l | 向后移动一个字符 | | **删除操作** | | x | 删除光标所在的字符 | | dw | 删除光标所在的单词 | | d$ | 删除光标至行尾所有字符 | | dd | 删除当前行 | | **改变与替换操作** | | r | 替换光标所在字符 | | R | 替换字符序列 | | cw | 替换一个单词 | | cb | 替换光标所在的前一个字符 | | c$ | 替换自光标位置至尾行的所有字符 | | **拷贝粘贴命令** | | yw | 将光标所在的单词拷贝到剪贴板 | | y$ | 将光标至尾的字符拷贝如剪贴板 | | yy | 将当前行拷贝到剪贴板 | | p | 将剪贴板的内容粘贴到光标后 | | P | 将剪贴板的内容粘贴到光标前 | ## 特殊模式 | 命令 | 输入方法 | | --- | --- | | :q | 不保存退出 | | :q! | 不保存强制退出 | | :w | 保存编辑 | | :w filename | 存入文件filename中 | | :w! filename | 强制存入文件filename中 | | **其他命令** | | :set nu | 显示行号 | | :nG | 跳至第n行 | | :u | 撤销 | | . | 重做 | | :nyy | 拷贝第n行 | | :e filename | 创建新文件 | | :n filename | 加载新文件 | | :vnew filename | 同时打开新文件 | # VIM案例 批量给文件增加注释。 ``` :1,10s/^/#/g ``` 批量删除文件注释。 ``` :1,10s/^#//g ``` 批量替换关键字root为admin。 ``` :%s/root/admin/gc ``` # VIMRC文件的配置 编辑宿主目录中的“ vim ~/.vimrc ”文件 ,增加以下内容。 执行 “ source .vimrc ”命令,用于加载此文件并立即生效。 ``` set number set shiftwidth=4 set softtabstop=4 set autoindent set fileencodings=utf-8,gb2312,gbk,gb18030,big5 set fenc=utf-8 set enc=utf-8 set background=dark ``` | 命令 | 解释 | | --- | --- | | set number | 设置行号 | | set tabstop=4 | *tabstop*选项设置 tab 字符的显示宽度为多少个空格,默认值是 8 | | set autoindent | 设置自动缩进 | | set fileencodings=utf-8,gb2312,gbk,gb18030,big5 | 文件编码 | | set fenc=utf-8 | fencs,是用来在打开文件的时候进行解码的猜测列表 | | set enc=utf-8 | enc,其作用是显示, 不管最后的文件是什么编码的,VIM都会将其转换为当前系统编码来进行处理 | | set background | 设置背景颜色 | # 本章小结 本章主要介绍Linux下最常用的编辑器VIM的基本使用,关于它的三种模式,以及在命令模式和特殊模式下的快捷键。最后还介绍了VIM配置文件的使用方便我们将常用的方法规划到配置文件中。下一章我们将会介绍系统管理,介绍那些系统运维工程师经常会用的系统文件。 # 习题 1.复制 /etc/passwd 文件到 /tmp 目录,并修改passwd文件中的关键字,将关键字root替换为administrator。 2.复制 /etc/passwd 文件到 /tmp 目录,将“#”批量替换第一列。