一、VI / VIM概述

  [更新]:VIM资料参见:http://www.runoob.com/linux/linux-vim.html

  是什么?

    是一个文本编辑器。

    Vim是从 vi 发展出来的一个文本编辑器.

  VIM有哪些提升?

   现在很多发行版本直接把VI做成了VIM的软链接

  如果使用VI打开文件,发现右下角有光标所在行列,则说明此时的VI就是VIM!(当然,也可以通过alias进行查看)

二、基本使用

  1.操作模式

    基本上 vi/vim 共分为三种模式,分别是

      命令模式(Command mode),——鸟哥将其定义为 一般模式

      插入模式(Insert mode)——鸟哥将其定义为编辑模式

      底线命令模式(Last line mode)。 ——鸟哥将其定义为命令行命令模式

    先看一个实例:

    //直接使用(vim abc),若存在abc文件,则直接打开,若不存在,则创建一个

  这里之前没有创建过此文件,所以执行后是一个新文件:

  //默认是命令模式

  先介绍几个简单的命令,按一下 i ,进入编辑模式

  输入一些测试字符(此处发现小键盘无法正常输入数字)

  编辑完成后如何保存退出呢

    按一下 esc,到底行模式,再按:wq ,保存并退出:

  可以看到,文件正确编辑了:

  三个模式的关系如下:

  

  接下来介绍一下几个命令模式

  2.命令模式

  用户刚刚启动 vi/vim,便进入了命令模式。

  此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

  以下是常用的几个命令:

      • i 切换到插入模式,以输入字符。
      • x 删除当前光标所在处的字符。
      • : 切换到底线命令模式,以在最底一行输入命令。

  若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

  命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

  几个实例:

  

  //打开文件(如不存在则创建新文件),经测试 centOS7此命令会到上次编辑处,各发行版略有差异

  

  //打开文件并定位到最后一行

  

  //打开文件并定位后第三行(切换数字定位任意行)

  

  //行数超过最大行,直接定位到最后一行

  

  //定位到第一次出现 hello 的位置,按 n ,切换下一个

  

  //同时打开或者创建多个文件,第一次在第一个文件,在底行模式输入 :n,切换到下一个文件

  若已到最后一个文件,无法前进,按 :N(或者 :prev)回到上一个文件

  3.输入模式

  在命令模式下按下i就进入了输入模式。

  在输入模式中,可以使用以下按键:

      • 字符按键以及Shift组合,输入字符
      • ENTER,回车键,换行
      • BACK SPACE,退格键,删除光标前一个字符
      • DEL,删除键,删除光标后一个字符
      • 方向键,在文本中移动光标
      • HOME/END,移动光标到行首/行尾
      • Page Up/Page Down,上/下翻页
      • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
      • ESC,退出输入模式,切换到命令模式

  4.底行模式

  在命令模式下按下:(英文冒号)就进入了底线命令模式。

  底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

  在底线命令模式中,基本的命令有(已经省略了冒号):

      • q 退出程序
      • w 保存文件

  按ESC键可随时退出底线命令模式。

三、常用指令

  更多指令介绍,参考菜鸟教程http://www.runoob.com/linux/linux-vim.html

  常用指令分类介绍,参考https://www.cnblogs.com/meet/p/4797069.html

  一般模式常用指令:

    G——跳到指定行,numG(例如10G跳到第10行,1G或者gg跳到首行),直接输入G跳到文件最后一行

    0/$——跳到行首或行尾

    yy/nyy——yy复制当前行,nyy复制光标所在行向下n行(例如10yy)

    p/P——在当前行下一行粘贴(p),上一行使用(P)

    dd——删除/剪切光标所在行

    /string——向后(向前使用?string)搜索string(例如/abc,搜索abc),使用n向下继续搜索,N向上继续搜索

      消除搜索过的高亮字符——:noh

    u——撤销

    .——重复前一次操作(小数点)

    ctrl+f/ctrl+b——前翻页/后翻页(下一页/上一页)

    :n1,n2s/old/new/g——替换(使用%不使用n1 n2则为全局替换),若要使用者确认,加上c参数

    :r filename——读取另外一个文件进入当前文件

  进入编辑模式常用指令:

    i——在光标处插入

    o/O——在光标下一行输入新的一行(o),在上一行使用O

  底线命令模式:

    :wq——储存后离开

    :set nu——显示行号

    :n——到第n行,例如:10到第10行

    :bn—下一个文件(VIM多文件操作)
    :bp—上一个文件

  最后,命令是一言难尽的,这里附上VIM键盘图

四、其他功能

  1.救援模式

    参考http://m.blog.csdn.net/weixin_36210698/article/details/72892553

  2.多文件编辑

    vim file1 file2直接打开多个文件

vim .txt .txt

    通过:files查看打开的文件列表

    

    使用:n进入下一个文件(:N进入上一个文件)

  3.多窗口展示  、

  在命令行界面输入“:sp {filename}”即可!那个 filename 可有可无, 如果想要在新窗口启动另一个文件,就加入文件名,否则仅输入 :sp 时, 出现的则是同一个文件在两个窗口间!

  

  相关操作:

    ctrl+w+↑/↓——窗口切换(按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下方向键),则光标可移动到下方的窗口。

    ctrl+w+q——离开(或者切换到下面的窗口使用:q离开)

    4.vim环境参数配置

      也就是之前的设置环境参数的:set nu不用每次都写,可以通过配置文件进行配置使用时

      完整环境参数参见http://blog.csdn.net/u011192409/article/details/49208605

      整体 vim 的设置值一般是放置在 /etc/vimrc 这个文件,不过,不建议你修改他! 你可以修改 ~/.vimrc 这个文件 (默认不存在,请你自行手动创建!),将你所希望的设置值写入! 举例来说,可以是这样的一个文件:

"这个文件的双引号 (") 是注解
set hlsearch "高亮度反白
set backspace= "可随时用倒退键删除
set autoindent "自动缩排
set ruler "可显示最后一列的状态
set showmode "左下角那一列的状态
set nu "可以在每一列的最前面显示行号啦!
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示。

    5.中文乱码问题

    参考https://jingyan.baidu.com/article/ab69b270de8b4f2ca7189f1d.html

    6.断行符转换

    参考:https://www.cnblogs.com/kerrycode/archive/2015/12/26/5077969.html

Linux入门进阶第一天——vim文本编辑器的更多相关文章

  1. Linux命令行下的vim文本编辑器

    Linux命令行下的vim文本编辑器 下面这个网站的地址讲解的非成分清楚!!!! http://blog.csdn.net/niushuai666/article/details/7275406 学习 ...

  2. Linux系统 vi/vim文本编辑器

    Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...

  3. linux/linux学习笔记-vim文本编辑器(mooc)

    vim文本编辑器 vim与vi的区别:( vim=vi +IMproved) VIM是一个Unix以及类unix文本编辑器 特点:功能强大,高度可定制 vim编辑器的三种模式:一般模式.编辑模式和命令 ...

  4. Linux基础学习(5)--文本编辑器Vim

    第五章——文本编辑器Vim 一. Vim常用操作 1.Vim简介:              Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立.编辑. ...

  5. Linux学习笔记(九)Vim文本编辑器的使用

    Vim文本编辑器的使用 Vim的工作模式 1.命令模式 2.输入模式 3.编辑模式 进入Vim 1.使用Vim打开文件 2.直接进入指定位置 Vim基本命令 1.插入命令 2.光标移动命令 3.使用V ...

  6. Vim 文本编辑器的基本使用

    Vim文本编辑器是Linux/Unix系统下最常用的工具之一,通过该工具可以很方便的建立.修改.编辑文档或者程序文件,其作用类似与windows系统下的记事本或者notepad++,因此熟练掌握该工具 ...

  7. 11 vim文本编辑器

    和sed相比,sed为字处理器(行编辑器),将文本逐行放入到模式空间(也就是内存)中进行处理,并显示在屏幕上.而vim.vi以及nano都是全屏文本编辑器,而vim则是vi的加强版本,相对于vi,vi ...

  8. deepin linux 学习笔记(二)——文本编辑器

    目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...

  9. (6.2)vim文本编辑器

    vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大. vim文本编辑器只有命令,没有菜单.

随机推荐

  1. vue怎么不通过dom操作获取dom节点

    今天写一个公众号的项目,写了一个vue的搜索组件,点击搜索框时,背景出现一个遮罩,代码结构如下: template:`<div class="searchBar-div"&g ...

  2. 1、Node.js 我的开始+安装

    内容:为什么开始学习node.js,需要安装哪些东西,及其安装过程 node.js的学习是按照菜鸟教程的node.js教程学习,学习这项技术主要是因为需要使用. 需要安装的东西:解释器,IDE(集成开 ...

  3. [POI2006]TET-Tetris 3D

    题目 二维线段树板子题啊 但是惊讶的发现我不会打标记 毕竟内层是线段树不能\(pushup\)也不能\(pushdown\) 于是考虑一下标记永久化 其实非常显然\(mx_i\)表示区间最大值,\(t ...

  4. 【[AHOI2008]逆序对】

    被锤爆了 被这个题搞得自闭了一上午,觉得自己没什么前途了 我又没有看出来这个题的一个非常重要的性质 我们填进去的数一定是单调不降的 首先如果填进去的数并不是单调不降的,那么填进去本身就会产生一些逆序对 ...

  5. Java50道经典习题-程序13 根据条件求数字

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?分析:完全平方数:如果一个数能是由两个相同的数相乘的结果,那么这个数就是完全平方数,例如:9==3*3: ...

  6. 软件分享:将应用一键打包成dmg文件

    简介 苹果软件开发完成后,都要打包成dmg文件.通常的做法也许是到系统自带的磁盘工具里制作dmg文件,但这样做比较繁琐,尤其是要打包多个应用时,每次只能制作一个dmg文件很麻烦.分享一个很好用很方便的 ...

  7. MFC各个控件之间运用SendMessage()传送CString和char[]字符串,以及int类型数据

    LRESULT SendMessage( HWND hWnd, // handle to destination window UINT Msg, // message WPARAM wParam, ...

  8. SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成ResultMap

    其实我一点都不想用mybatis,好多地方得自己写,比如这里. 使用mybatis要写大量的xml,烦的一批.最烦人的莫过于写各种resultmap,就是数据库字段和实体属性做映射.我认为这里应该是m ...

  9. HDU 1711 Number Sequence (KMP简单题)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. 1<=portNo<=4竟然在keil4.71里面不报错

    1.if( 1<=portNo<=4 ) {  CardIn2_CS_L; //pull low  CardIn1_CS_H;  CardOut1_CS_H;  CardOut2_CS_H ...