1. 概述

工欲善其事 必先利其器。vim是非常好用的文本编辑器,可以将它看作是vi的进阶。绝大多数Unix系统都会内置vi编辑器,vi是文本编辑器,vim是程序编辑器。相比vi,它可以根据文件的类型高亮文本,以方便程序设计。

2. 安装

现在一般unix系统都会安装vim了,如果你的系统真的没有vim,就需要自己安装了,vim编辑器需要安装三个包:

  • vim-enhanced-7.0.109-7.el5
  • vim-minimal-7.0.109-7.el5
  • vim-common-7.0.109-7.el5

步骤如下(centos/redhat系统)

  1. 查看一下你本机已经存在的包,确认一下你的vim是否已经安装:
    输入 rpm -qa|grep vim 这个命令,如何vim已经正确安装,则会显示上面三个包的名称
  2. 如果缺少了其中某个,比如说: vim-enhanced这个包少了,执行:yum -y install vim-enhanced 命令,它会自动下载安装。
  3. 如果上面三个包一个都没有显示,则直接输入命令:
    yum -y install vim*

即可自动安装,完毕后,即可使用vim编辑器。

3. vim的模式

vim一共有三个模式

  • 一般模式

    使用vim打开/创建文件,移动光标,复制、粘贴、定位等

  • 编辑模式

    使用[IiOoRrAa]进行入编辑模式,可以编辑文件内容,通过[esc]退回到一般模式

  • 指令模式

    使用 [:/?]进入指令模式,可以离开、保存文件等,通过[esc]退回到一般模式


** 图中要注意编辑模式和指令模式不能直接交互 **

4. vim使用示例

  1. 创建一个文本text.sh vim test.sh 如果test.sh存在则是打开文本,不存在就新建
  2. 编辑文件内容 i 键盘敲击i,进入编辑模式,可以输入文本,注意左下角提示
  3. 退回到一般模式 [esc] 键盘敲击esc按键,退出编辑模式
  4. 保存并退出 :wq 分号进入指令模式,wq为保存文件并退出vim

5. vim快捷键(常用)

  • 一般模式

    快捷键 说明
    移动光标
    ←或h 向左移动光标
    →或l 向右移动光标
    ↓或j 向下移动光标
    ↑或k 向上移动光标
    [ctrl] + f 向下翻页
    [ctrl] + b 向上翻页
    - 光标移动到上一行
    + 光标移动到下一行
    0^ 光标移动到当前行首
    $ 光标移动到当前行尾
    H 光标移动到屏幕第一行
    M 光标移动到屏幕中间行
    L 光标移动到屏幕最后一行
    gg 光标移动到文档第一行
    G 光标移动到文档最后一行
    nG 光标移动到文档第n行
    搜索
    /word 光标移动到屏幕最后一行
    n 重复前一个搜寻动作
    :n1,n2s/word1/word2/g 在n1到n2行之间搜索word1,并用word2全局替换
    :1,$s/word1/word2/g 第一行到最后一行搜索word1,并替换为word2
    复制粘贴
    x, X x 为向后删除一个字符, X 为向前删除一个字符
    dd 删除整行
    yy 复制整行
    p,P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!
    u 回退
    [ctrl]+r 重做
    . 重复前一个动作
  • 编辑模式

    快捷键 说明
    i,I 进入插入模式(Insert mode) i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。
    a,A 进入插入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』
    o,O 进入插入模式(Insert mode):o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!
    r, R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;
    [Esc] 回到一般模式
    区块选择
    v 字符区块选择
    V 行区块选择
    [ctrl]+v 回到一般模式
    r, R 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;
    [Esc] 回到一般模式
  • 指令模式

    快捷键 说明
    :w 保存修改
    :w! 强制保存修改。到底能不能写入,还是跟你对该档案的档案权限有关!
    :q 退出
    :q! 强制退出,不保存修改
    :wq 保存并退出
    ZZ 若档案没有更动,则离开,若档案已经被修改,则保存后离开!
    :w filename 另存为文件filename
    :n1,n2 w [filename] n1到n2行保存到文件filename
    :! command 执行命令

6. 总结

学到这里基本上你可以很轻松的使用vim了。虽然这里只是入门,但是已经覆盖日常操作80%,还有什么没介绍:

  • 多文档操作
  • 分屏操作
  • 配置及插件安装(有时间再写一篇博文介绍)

[vim] vim入门的更多相关文章

  1. Vim新手入门资料和一些Vim实用小技巧

    一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为阿里巴巴高级技术专 ...

  2. vim+makefile入门编辑,编译,差错实例

    vim+makefile入门编辑,编译,差错实例 vim makefile 编译 编写代码,一般在vim中编辑完后,输入:wq,在命令行下输入g++ hello.cc -o hello ,出现问题,打 ...

  3. vim使用入门设置

    分为以下四步. 1,安装vim 2,安装git yum -y install vim git (Fedora/CentOS) /apt-get install vim git (Debian/Ubun ...

  4. 转载:Vim 配置入门

    转载:Vim 配置入门 原文地址:http://www.ruanyifeng.com/blog/2018/09/vimrc.html 作者: 阮一峰 Vim 是最重要的编辑器之一,主要有下面几个优点. ...

  5. VIM | vim操作大全

    1. 关于Vim vim是Linux下第二强大的编辑器. 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效. 如果是初学vi,运行一下vimtutor是个聪明的决定. ...

  6. Vim 使用入门快捷键

    Vim 和 Emac 都是利器啊,前段时间决定熟悉一套跨平台的编辑器,以便在 Win,Mac,Ubuntu 下都有相同的编辑体验. 于是尝试了一下 Vim,使用了一段时间,确实比 UE 之类的要高效. ...

  7. (大数据工程师学习路径)第二步 Vim编辑器----Vim快速入门

    vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截 ...

  8. Vim快速入门

    学习自:实验楼 Vim具有6种基本模式和5种派生模式 普通模式: vim启动后的默认模式,常用的编辑器命令诸如移动光标,删除文本. 普通模式中,有很多方法进入插入模式,常用 a 或 i 键. 插入模式 ...

  9. vim 基本命令入门

    简介 vim是Linux 系统下类似于Windows的记事本的编辑器. vim 中经常使用的三种模式 一般模式:浏览文件内容. 插入模式:编辑文件内容. 底行模式:进行保存编辑内容,退出等操作. 基本 ...

随机推荐

  1. 精选19款华丽的HTML5动画和实用案例

    下面是本人收集的19款超酷HTML5动画和实用案例,觉得不错,分享给大家. 1.HTML5 Canvas火焰喷射动画效果 还记得以前分享过的一款HTML5烟花动画HTML5 Canvas烟花特效,今天 ...

  2. 『Golang』跨平台TUI(基于文字的用户界面)库Terbox-Go文档翻译

    原文 package termbox import "github.com/nsf/termbox-go" termbox-go 是一个用于创建跨平台TUI(基于文本的用户界面)的 ...

  3. 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪

    前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...

  4. C头文件和源文件的连

    (http://blog.163.com/yui_program/blog/static/18415541520115177852896/) 一.源文件如何根据#include来关联头文件 1,系统自 ...

  5. tcp/ip协议listen函数中backlog参数的含义与php-fpm的502 Bad Gateway

    To understand the backlog argument, we must realize that for a given listening socket, the kernel ma ...

  6. #ifdef 和 #if defined 的区别 -- 转

    #ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB) xxxxxxxxx #e ...

  7. 用Razor語法寫範本-RazorEngine組件介紹【转——非常好,可以用它来代替NVelocity】

    RazorEngine 官網網址:http://razorengine.codeplex.com 在找到RazorEngine之前曾經想過其他的方案,如T4與V8 Engine載jquery.temp ...

  8. 让我们一起Go(十二)

    前言: 上篇中,我们讲到了在Go语言中如何定义方法,今天,我们将进一步深入Go语言的面向对象编程. 一.Go语言中的接口 首先来看一个最基本的接口: 和定义一个结构体类似,只不过将struct换成了i ...

  9. SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework

    3.1运行效果: 3.2开发实现: 3.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...

  10. `cocos2dx非完整` 添加xxtea加密模块

    在上一篇文章中,我已经开始着手写自己的模块,也就是fw部分.其中上一篇文章中完成的是lua部分的配置解析部分,涉及一点点平台方面的封装.这一片文章我来说明一下我是如何处理cocos2dx资源加密的.首 ...