VIM基本介绍
vi和在修改vim命令是linux中强大的文本编辑器,由于linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数
vim其实是vi的升级版
yum install -y vim

vi和vim的区别
vi不显示高亮颜色语法
vim显示高亮颜色语法
其他功能没什么区别,所以在linux系统下,使用vi还是vim取决个人习惯

vim模式介绍
vim的三种模式的切换  图1
命令模式
       控制光标移动、可对文件进行复制、粘贴、删除等工作。使用vim filename编辑一个文件时,一进入该文件
       就是命令模式了。在这个模式下,可以进行光标移动、复制、删除、粘贴操作。
输入(编辑)模式
       从命令模式进入编辑模式,只需你按一个键即可(i,l,a,A,o,O,r,R)。当进入编辑模式时,会在屏幕
       的最下一行出现“INSERT”的字样。从编辑模式回到命令模式只需要按键盘左上方的ESC键即可。
末行模式
       在命令模式下,输入“:”或者“/”即可进入末行模式。在该模式下,可以进行的操作有,显示行号、搜索、替换
       、保存、退出

图1   vim模式之间的切换

vim编辑器配置文件流程如下:
1、默认打开文件处于命令模式
2、需要从命令模式切换至编辑模式
3、编辑模式修改配置文件,然后返回命令行模式
4、最后通过命令模式进入末行模式,保存和退出操作

注意:在vim中,无法直接从编辑模式切换到末行模式

yum install -y httpd
命令行模式
光标的移动
       方向:hjkl,小键盘的上下左右
光标的跳转
       行间跳转
               G/shift+g 跳转光标到行末
               gg 跳转光标到行首
               Ngg 跳转光标至当期文件内的N行
      行内跳转
               $/end 将当前光标跳转到光标所在行的末端(尾部)
               ^/home 将当前光标跳转到光标所在行的头部-->数字0
      翻页
               ctrl+f/pagedown 向下翻页
               ctrl+b/pageup 向上翻页
[root@localhost tmp]# cp /etc/httpd/conf/httpd.conf /tmp/
[root@localhost tmp]# vim httpd.conf

复制
       yy 复制当前光标所在的行
       Nyy 复制挡墙光标以及光标以下N-1行

粘贴
       p 粘贴至当前光标下一行
       P(大写) 粘贴至当前光标上一行

删除
       dd 删除当前光标所在的行
       Ndd 删除当前光标所在的行及以下的N-1行
       dG 删除当前光标以后的所有行
       D 删除当前光标到行尾
       x 删除当前光标标记往后的字符
       X 删除当前光标标记往前的字符

剪切
       先删除dd,后粘贴p

撤销
       u 撤销上一次的操作
       U 撤销之前所有的操作

替换
       r 替换当前光标标记的当个字符
       R 进入REPLACE,连续替换,ESC结束

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

末行模式
:w 保存当前的状态
:w! 强制保存当前的状态
:q 退出当前文档(文档必须保存才能退出)
:q! 强制退出文档不会修改当前内容
:wq 先保存,在退出
:wq! 强制保存并退出
:x 先保存,在退出
ZZ 保存退出,shift+zz
行间跳转:
:number 跳转至对应的行号
复制
      :ny 复制单行
       :m,ny 复制m到m行后的内容
       :%y 复制所有行
删除
       :nd 删除单行
       :m,nd 删除m行及m行后的n-1行
       :%d 删除文件所有内容
查找 /string 需要搜索的内容
       n 按搜索到的内容依次往下进行查找
       N 按搜索到的内容依次网上进行查找
替换
       :s#bin#test 替换光标所在行的第一个满足条件的内容
       :s#bin#test#g 替换光标所在行的所有满足条件的内容
       :m,nds#sbin#test#g 替换m-n行中包含sbin的内容为test-5行中包含sbin的内容为test
       :%s#bin#test#g 替换整个文本文件中包含sbin的替换为test
       :%s#bin#test#gc 替换内容时提示是否需要替换
另存
       :w /root/test 将文件所有内容另存为/root/test
读入
       :r /etc/hosts 读入/etc/hosts文件当前光标下面
       :5r /etc/hosts指定/etc/hosts文件当前文件的哪行下面

VIM视图模式
视图模式(从命令行模式进入视图模式)
ctrl+v 进入VISUAL BLOCK选中需要注释的行(可视块模式)
1.插入:shift+i 进入编辑模式,输入#,结束按ESC键
2.删除:选中内容后,按x或d键删除
3.替换:选中需要替换的内容,按下r键,然后输入替换后的内容
shift+v 进入VISUAL LINE选中行内容(可视行模式)
1.复制:选中行内容后按y键即可复制
2.删除:选中行内容后按d键删除

VIM 环境变量
环境变量临时生效

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

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

VIM个人练习:

请把/etc/passwd复制到/tmp/目录下,并重命名为test.txt
      cp /etc/passwd /tmp/test.txt
      使用vi,在vi里面使用末行模式的w和e来实现
用vim打开test.txt并设置行号
     :set nu
分别向下、向右、向左、向右移动5个字符
把光标移动到第10行
   :10
   10gg
把光标移动到行末,在移动到行首
     end$ home^
移动到test.txt文件的最后一行
     G
移动到文件的行首
     gg 1gg :1
搜索文件中出现的root并数一下一共出现多少个,不区分大小写
     :set ic :%s/root//ng :%s/root/&/ng
把从第一行到第三行出现的root替换成student
     :1,3s#root#student#g
还原上一步操作
     u
把整个文件中所有的root替换成stduent
    :%s#root#student#g
把光标移动到20行,删除本行
   :20
    dd
还原上一步操作
     u
删除第19行
    :19d
还原上一步操作
     u
删除从5行到10行的所有内容
     :5,10d
还原上一步操作
      u
复制2行并粘贴到11行下面
     :2y :11 p
还原上一步操作(按两次u)
复制从11行到15行的内容并粘贴到8行上面
    :11,15y :8 P
还原上一步操作(按两次u)
把13行到18行的内容移动文件的尾部
    :13d :18 p
还原上一步操作(按两次u)
光标移动到首行,把/sbin/nologin改成/bin/bash
    gg :s#/sbin/nologin#/bin/bash#g
在第一行下面插入新的一行,并输入“#hello”
   :1 o # hello
保存文档并退出
   :wq

vim模式及基础命令的更多相关文章

  1. Vim 模式及常用命令整理

    VIM 命令     以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令.   vim的模式 基本上可以分为3种模式,分别是命令模式(command mode).插入模 ...

  2. vim基础命令

    2015-06-04 by komilevim基础命令 打开一个文件 vim index.php 几种模式说明Normal Mode也就是最一般的普通模式,默认进入vim之后,处于这种模式.Inser ...

  3. centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  4. VIM操作基础命令

    VIM操作基础命令 1 文件操作 1.1 打开文件 VIM 使用 –o 或 –O 选项打开多个文件,其中 –o 表示垂直并排,例如 vim -o lesson4 lesson5 lesson6.大O表 ...

  5. Linux基础命令---vim文本编辑

    vim vim是unix系统最通用的文本编辑器,它的功能可以说是非常强大了,它是vi的升级版.vim有三种工作模式:编辑模式.命令模式.末行模式,默认打开的时候进入命令模式. 此命令的适用范围:Red ...

  6. vim第五章 命令行模式

    vim第五章命令行模式 技巧 27 结识vim的命令行模式 在命令行模式中执行的命令有被称作ex命令    在按/调出查找提示符或者<C-r>=访问表示寄存器时 命令行模式也被激活     ...

  7. VIM 三种模式和常用命令

    引言 大数据开发工作中,周围的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀.语法高亮呀.拼写检查呀,能给它开的都给 ...

  8. Linux安全基础:shell及一些基础命令

    1.什么是shell?Shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash. 2.shell的分类(1)bash bash shell 是 Bourn ...

  9. 第四节,Linux基础命令

    第四节,Linux基础命令 命令是系统操作员对系统传入的指令,传入指令后回车,系统接收到指令做出相应的行为 1.查看用户位于系统什么位置 [pmd]检查操作用户位于系统的什么位置 命令         ...

随机推荐

  1. c 循环左移

    char b[11] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; const int iShift = 4; for (int j = ...

  2. mysql字符类型总结及常用字符函数

    常用字符串函数: concat(s1,s2,s3..)       连接s1,s2,...sn为一个字符串 INSERT(str,x,y,instr)将字符串str从x位置开始,y个字符串替换为字符串 ...

  3. mysql插入文本文档及读取

    1.把本地的一个文件插入到数据库中,数据库字段用text保存 public static void main(String[] args) { PropKit.use(“pro.txt”);Druid ...

  4. P(Y=y|x;θ)表示什么意思

    https://blog.csdn.net/jh1137921986/article/details/88999539 在机器学习中,特别是学习到关于概率/似然估计方面的内容,经常看到类似P(Y=y| ...

  5. 2.Git基本配置

    用户名和邮箱地址是本地git客户端的一个变量 . 用户每次提交代码都会记录用户名和邮箱 . 设置git的用户和邮箱git config [--local | --global | --system] ...

  6. lemon

    这本是一个技术博客网站 我却用来记录关于六月 就好像特别才不配你的特别一样 就好像以后要特别喜欢cos一样 就好像再特别的六月也会过渡到七月一样

  7. JavaWeb之Servlet入门(二)

    1. 准备 在JavaWeb之Servlet入门(一)中,我们完成了第一个Servlet程序,完成了从URL到后台控制器的中转过程,接下来我们延续JavaWeb之Servlet入门(一)学习下如何传参 ...

  8. Ubuntu--- 安装VMware 报错 Build enviroment error!

    今天从 Ubuntu 安装 VMware 下载并安装过程都很顺利,但是在启动过程中报错误,所以总结如下: 报错原因:VMware 第一次启动需要编译一些模块,但是刚开始并没有安装 gcc 所以便报无法 ...

  9. Cutting Sticks UVA - 10003(DP 仍有不明白的地方)

    题意:对一根长为l的木棒进行切割,给出n个切割点,每次切割的价值,等于需要切割的木头长度. 一开始理解错了,认为切割点时根据当前木条的左端点往右推算. 实际上,左端点始终是不变的一直是0,右端点一直是 ...

  10. @Component, @Repository, @Service,@Controller的区别

    @Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理 @Componen ...