# 1.VIM 基本概述

1. 什么是 VIM? vi 和 vim 是 Linux 下的一个文本编辑工具。(可以理解为 windows 的记事本,或 word 文档) 2. 为什么要使用 VIM? 因为 Linux 系统一切皆为文件,而我们工作最多的就是修改某个服务的配置 (其实就是修改文件内容)。 也就是说如果没有 vi/vim,我们很多工作都无法完成。PS: vim 是学习 linux 最重要的命令之一 3.VI 与 VIM 有什么区别? vi 和 vim 都是文本编辑器,只不过 vim 是 vi 的增强版,比 vi 多了语法高亮显示,其他编辑功能几乎无差,所以使用 vi 还是 vim 取决个人习惯。(相当于 windows 系统下的文本编辑软件 “记事本” 与 "notepad++" 的区别) PS:因为前期最小化安装 CentOS 系统,所以默认情况下没有 vim 命令,但可以使用 yum install vim -y 安装 4. 如何使用 VIM 编辑器? 在使用 VIM 之前,我们需要先介绍下 VIM 的三种模式:普通模式、编辑模式、命令模式,每种模式分别支持多种不同的快捷键,要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。 5.VIM 模式三种模式介绍 1. 普通模式:主要是控制光标移动,可对文本进行复制、粘贴、删除等工作。 使用 vim filename 编辑一个文件时,一进入该文件就是普通模式了。 在这个模式下,可以进行光标移动、复制、删除、粘贴操作。 2. 编辑模式:主要进行文本内容编辑和修改 从普通模式进入编辑模式,只需你按一个键即可(i, I, a, A, o, O) 当进入编辑模式时,会在屏幕的最下一行会出现 "INSERT" 标记 从编辑模式回到普通模式只需要按键盘左上方的 ESC 键即可。 3. 末行模式:主要用于保存或退出文本。 在普通模式下,输入 ":" 或者 "/" 即可进入命令模式。 在命令该模式下,可进行的操作有,显示行号、搜索、替换、保存、退出。 小结: vim 编辑打开文件整体流程如下: 1. 默认打开文件处于普通模式 2. 从普通模式切换至编辑模式需要使用 a、i、o 3. 编辑模式修改完毕后需要先使用 ECS 返回普通模式 4. 在普通模式输入 ":" 或 "/" 进入命令模式,可实现文件的保存与退出。 PS: 在 vim 中,无法直接从编辑模式切换到命令模式。

# 2.VIM 模式使用

1. 普通模式

#1. 命令光标跳转
G       #光标跳转至末端
gg      #光标跳转至顶端
Ngg     #光标跳转至当前文件内的 N 行
$       #光标跳转至当前光标所在行的尾部
^0     #光标跳转至当前光标所在行的首部
-------------------------------------------
#2. 文件内容较多
ctrl+f  #往下翻页 (行比较多)
ctrl+b  #往上翻页
-------------------------------------------
#3. 复制与粘贴
yy      #复制当前光标所在的行
5yy     #复制当前光标以及光标向下 4 行
 
p(小写)   #粘贴至当前光标下一行   
P(大写)   #粘贴至当前光标上一行
-------------------------------------------
#4. 删除、剪贴、撤销  
dd      #删除当前光标所在的行   
4dd     #删除当前光标所在的行以及往下的 3 行
dG      #删除当前光标以后的所有行
D       #删除当前光标及光标以后的内容  
x       #删除当前光标标记往后的字符
X       #删除当前光标标记往前的字符
dd & p  #剪贴、先删除 dd (number dd),后粘贴 p
u       #撤销上一次的操作
-------------------------------------------
#5. 替换
r       #替换当前光标标记的单个字符
R       #进入 REPLACE 模式,连续替换,ESC 结束

2. 编辑模式 (从普通模式进入到编辑模式)

i   #进入编辑模式,光标不做任何操作
a   #进入编辑模式,将当前光标往后一位
o   #进入编辑模式,并在当前光标下添加一行空白内容
-------------------------------------------
I   #进入编辑模式,并且光标会跳转至本行的头部
A   #进入编辑模式,将光标移动至本行的尾部
O   #进入编辑模式,并在当前光标上添加一行空白内容

3. 命令模式,主要用于搜索,保存,退出文件。

#1. 文件保存与退出
:w      保存当前状态
:w!     强制保存当前状态
:q      退出当前文档(文档必须保存才能退出)
:q!     强制退出文档不会修改当前内容
:wq     先保存,在退出
:wq!    强制保存并退出
:x      先保存,在退出
ZZ      保存退出, shfit+zz
:number 跳转至对应的行号
-------------------------------------------
#2. 文件内容查找
/string #需要搜索的内容(查找)
n       #按搜索到的内容依次往下进行查找
N       #按搜索到的内容依次往上进行查找
-------------------------------------------
#3. 文件内容替换
:1,5s#sbin#test#g   #替换 1-5 行中包含 sbin 的内容为 test
:%s#sbin#test#g     #替换整个文本文件中包含 sbin 的替换为 test
:%s#sbin#test#gc    #替换内容时时提示是否需要替换
-------------------------------------------
#4. 文件内容另存
:w /root/test.txt  #将所有内容另存为 /root/test.txt 文件中
-------------------------------------------
#5. 文件内容读入
:r  /etc/hosts  #读入 /etc/hosts 文件至当前光标下面
:5r /etc/hosts  #指定插入 /etc/hosts 文件至当前文件的第五行下面

4. 视图模式 (从普通模式进入视图模式),主要进行批量操作

ctrl+v  进入可视块模式,选中需要注释的行
    1.插入:按shift+i进入编辑模式,输入#,结束按ESC键
    2.删除:选中内容后,按x或者d键删除
    3.替换:选中需要替换的内容, 按下r键,然后输入替换后的内容
-------------------------------------------
shift+v 进入可视行模式,选中整行内容
    1.复制:选中行内容后按y键及可复制。
    2.删除:选中行内容后按d键删除。

# 3.VIM 扩展知识

1. 环境变量临时生效

:set nu             #显示行号
:set ic             #忽略大小写,在搜索的时候有用
:set ai             #自动缩进
:set list           #显示制表符 (空行、tab 键)
:set no[nuicai…]  #取消临时设定的变量

2. 环境变量永久生效。~/.vimrc 个人环境变量 (优先级高) /etc/vimrc 全局环境变量

# vim  ~/.vimrc #当下次再打开文件自动显示行号并忽略大小写
set nu
set ic
#如果个人 vim 环境没有配置,则使用全局 vim 环境变量配置。
#如果个人 vim 环境和全局环境变量产生冲突,优先使用个人 vim 环境变量。

3. 如何同时编辑多个文件

vim -o file1 file2  #水平分割
vim -O file1 file2  #垂直分割
#ctrl+ww 文件间切换

4. 相同文件之间差异对比,通常用于对比修改前后差异

# diff      #文件对比   
# vimdiff   #以 vim 方式打开两个文件对比,高亮显示不同的内容

5. 如果 VIM 非正常退出 (ctrl+z)挂起或强制退出终端没关闭 VIM 后

#假设打开 filename 文件被以外关闭,需要删除同文件名的.swp 文件即可解决
# rm -f .filename.swp

# 4.VIM 练习示例

1. 将 /etc/passwd 复制到 /root/ 目录下,并重命名为 test.txt 2. 用 vim 打开 test.txt 并显示行号 3. 分别向下、向右、向左、向右移动 5 个字符,分别向下、向上翻两页 4. 把光标移动到第 10 行,让光标移动到行末,再移动到行首,移动到 test.txt 文件的最后一行,移动到文件的首行 5. 搜索文件中出现的 root 并数一下一共出现多少个,不区分大小写搜索 6. 把从第一行到第三行出现的 root 替换成 --od--,然后还原上一步操作 8. 把整个文件中所有的 root 替换成 --od-- 9. 把光标移动到 20 行,删除本行,还原上一步操作 10. 删除第 19 行,还原上一步操作 11. 删除从 5 行到 10 行的所有内容,还原上一步操作 12. 复制 2 行并粘贴到 11 行下面,还原上一步操作(按两次 u) 13. 复制从 11 行到 15 行的内容并粘贴到 8 行上面,还原上一步操作(按两次 u) 14. 把 13 行到 18 行的内容移动文件的尾部,还原上一步操作(按两次 u) 15. 光标移动到首行,把 /sbin/nologin 改成 /bin/bash 16. 在第一行下面插入新的一行,并输入 "# Hello!" 17. 保存文档并退出 2. 练习示例 2 - 文件

[root@www ~]# cat proxy.conf
server {
    Listen 8080;
    Server_Name vim.OldboyEDU.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forward-for;
        proxy_intercept_errors on;
        proxy_next_upstream error timeout;
        proxy_next_upstream_timeout 3s;
        proxy_next_upstream_tries 2;
        error_page 500 502 403 404 = /proxy_error.html;
    }
    location = /proxy_error.html {
        root /code/proxy;
    }
}

2. 练习示例 2 - 题目 1. 使用 vim 打开 proxy.conf 文件 2. 修改 Listen 为 listen 小写,并将 8080 修改为 80 3. 修改 ServerName 为 server_name 小写。 4. 修改 vim.OldboyEDU.com 为 vim.oldboy.com 5. 在 server_name 行下插入一行 root /code; 5. 复制 5-14 行的内容,然后将其粘贴到 14 行下面 6. 删除与 proxy_set_header 相关的两行全部删除 7. 如上操作完成后,在 13-20 行前面加上 #号 8. 删除 21-23 的行,然后保存当前文件

此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Oldxu 微信支付

微信支付

Oldxu 支付宝

支付宝