先看一趣图


vi编辑器作为程序员神器,还是有必要学习一下!

vi/vim是什么?

Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便。vi就是一种功能强大的文本编辑器,而vim则是高级版的vi,不但可以用不同颜色显示文字内容,还能进行诸如shell脚本、C语言程序编辑等功能,可以作为程序编辑器。

为什么要学习vi/vim?

首先所有的Linux发行版系统上都会默认内置vi编辑器,而不一定带有其他文本编辑器,非常通用;其次,很多软件的编辑接口都会默认调用vi;第三,vi具有程序编辑的能力;最后,vi程序简单,编辑速度相当快速。

vi的三种模式及各个模式之间的转换关系

一般模式常用操作

【h(或向左方向键)】 光标左移一个字符
【j(或向下方向键)】 光标下移一个字符
【k(或向上方向键)】 光标上移一个字符
【l(或向右方向键)】 光标右移一个字符【[Ctrl] + f】 屏幕向下移动一页(相当于Page Down键)
【[Ctrl] + b】 屏幕向上移动一页(相当于Page Up键)【[0]或[Home]】 光标移动到当前行的最前面
【[$]或[End]】 光标移动到当前行的末尾【G】 光标移动到文件的最后一行(第一个字符处)
【nG】 n为数字(下同),移动到当前文件中第n行
【gg】 移动到文件的第一行,相当于"1G"
【n[Enter]】 光标向下移动n行【/word】 在文件中查找内容为word的字符串(向下查找)
【?word】 在文件中查找内容为word的字符串(向上查找)
【[n]】 表示重复查找动作,即查找下一个
【[N]】 反向查找下一个
【:n1,n2s/word1/word2/g】 n1、n2为数字,在第n1行到第n2行之间查找word1字符串,并将其替换成word2
【:1,$s/word1/word2/g】 从第一行(第n行同理)到最后一行查找word1注册,并将其替换成word2
【:1,$s/word1/word2/gc】 功能同上,只不过每次替换时都会让用户确认【x,X】 x为向后删除一个字符,相当于[Delete],X为向前删除一个字符,相当于[Backspace]
【dd】 删除光标所在的一整行
【ndd】 删除光标所在的向下n行【yy】 复制光标所在的那一行
【nyy】 复制光标所在的向下n行
【p,P】 p为将已经复制的数据在光标下一行粘贴;P为将已经复制的数据在光标上一行粘贴【u】 撤消上一个操作
【[Ctrl] + r】 多次撤消
【.】 这是小数点键,重复上一个操作

一般模式切换到编辑模式的操作

1、进入插入模式(6个命令)

【i】 从目前光标所在处插入
【I】 从目前光标
【a】 从当前光标所在的下一个字符处开始插入
【A】 从光标所在行的最后一个字符处开始插入
【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入

2、进入替换模式(2个命令)

【r】 只会替换光标所在的那一个字符一次
【R】 会一直替换光标所在字符,直到按下[ESC]键为止
【[ESC]】 退出编辑模式回到一般模式

一般模式切换到命令行模式

【:w】 保存文件
【:w!】 若文件为只读,强制保存文件
【:q】 离开vi
【:q!】 不保存强制离开vi
【:wq】 保存后离开
【:wq!】 强制保存后离开
【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果
【:set nu】 显示行号
【:set nonu】 取消显示行号
【:w newfile】 另存为

文件恢复模式

【[O]pen Read-Only】 以只读方式打开文件
【[E]dit anyway】 用正常方式打开文件,不会载入暂存文件内容
【[R]ecover】 加载暂存文件内容
【[D]elete it】 用正常方式打开文件并删除暂存文件
【[Q]uit】 按下q就离开vi,不进行其他操作
【[A]bort】 与quit功能类似

块选择(一般模式下用)

【v,V】 v:将光标经过的地方反白选择;V:将光标经过的行反白选择
【[Ctrl] + v】 块选择,可用长方形的方式选择文本
【y】 将反白的地方复制到剪贴板
【d】 将反白的内容删除

多文件编辑

【vim file1 file2】 同时打开两个文件
【:n】 编辑下一个文件
【:N】 编辑上一个文件
【:files】 列出当前用vim打开的所有文件

多窗口功能

【:sp [filename]】 打开一个新窗口,显示新文件,若只输入:sp,则两窗口显示同一个文件
【[Ctrl] + w + j】 光标移动到下方窗口
【[Ctrl] + w + k】 光标移动到上方窗口
【[Ctrl] + w + q】 离开当前窗口

vim配置文件

vim的配置文件为/etc/vimrc,但一般不建议直接修改这个文件,而是在用户根目录下创建一个新的隐藏文件:
vim ~/.vimrc
然后编辑这个文件,常用的配置如下:
"双引号后面的内容为注释
set nu "显示行号
set hlsearch "查找的字符串反白显示
set backspace=2 "可随时用退格键进行删除
set autoindent "自动缩排
set ruler "在最下方一行显示状态
set showmode "在左下角显示模式
set bg=dark "显示不同的底色,还可以为light
syntax on "语法检验,颜色显示

Dos与Linux的断行字符(文件转化)

dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
-k:保留该文件原本的mtime时间格式
-n:保留原本旧文件,将转换后的内容输出到新文件

语系编码转化

iconv --list 列出iconv支持的语系编码
iconv -f 原本编码 -t 新编码 filename [-o new file]
-f:from,后接原本的编码格式
-t:to,后接新编码格式
-o file:可选参数,建立新文件
例:将/tmp/a.txt从big5编码格式转换成utf8编码格式:
iconv -f big5 -t utf8 /tmp/a.txt -o new.txt

vi编辑器的基本用法相关推荐

  1. 【转】vi编辑器中如何复制粘贴文本

    转自:http://old.blog.edu.cn/user2/icethawless/archives/2006/1489681.shtml vi中多个文件相互之间的复制.粘贴功能简介 大家在vi编 ...

  2. Linux基础到进阶(一)Linux基础命令、输入输出错误重定向、目录分类与作用、vi编辑器

    文章目录 基础命令 输入.输出.错误重定向 输入重定向: < 输出重定向:> 错误重定向 目录分类与作用 vi编辑器 命令模式 底行模式 基础命令 1.cd命令 功能说明:切换目录 cd ...

  3. RHCSA-Day2 --- 命令、目录结构、vi编辑器

    目录 2.1 访问命令行 2.2 使用桌面访问命令行 2.3 常用简单命令 1.echo命令 2.date命令 3.timedatectl命令 4.reboot命令 5.poweroff命令 6.wg ...

  4. linux内置编辑器(vi编辑器)

    vim文本编辑器 为什么学vi? 1)所有的Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在: 2)很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的 cr ...

  5. rmf文件 linux,实验一 linux环境与vi编辑器

    实验一UNIX/LINUX使用环境及vi编辑器 [实验目的] 1.了解UNIX/LINUX的命令及使用格式. 2.复习C语言程序基本知识练习并掌握UNIX提供的vi编辑器来编译C程序 3.学会利用gc ...

  6. ubuntu下 vi编辑器使用手册

    本文援引于   http://www.cnblogs.com/sophine/archive/2012/04/26/2471188.html ubuntu下 vi编辑器使用手册 文件编辑器 vi 作者 ...

  7. Linux(Ubuntu)操作系统,vi编辑器与gcc编译器的下载与使用(命令参数很详细)

    目录 一.什么是编辑器.编译器? 1.1.编辑器下载 1.2.编译器下载 二.常用的三种编辑器 2.1.vi编辑器 2.2.vi编辑器的三种工作模式 2.2.1.命令行模式 2.2.2.输入模式 2. ...

  8. Linux系统笔记:shell命令、文件系统、Vi编辑器、文件IO、mmap()、bmp图片格式、线程

    文章目录 一.shell命令集 二.ubuntu文件系统 三.vi编辑器 四.文件IO 五.Linux中C库mmap()函数详解 六.bmp图片格式详解 七.C语言笔记 (一)标准IO函数 time( ...

  9. Linux下vi编辑器命令精华版

        最近开始使用vi编辑器,用了几天,发现其实还是比较好用的.对自己常用的命令做个总结,以备实时查阅.一下内容是对网络多篇文章的总结.   进入vi的命令: vi filename :打开或新建文 ...

最新文章

  1. python 图像数据类型及颜色空间转换
  2. 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结
  3. 【python进阶】_装饰器
  4. 使用MySQL Workbench远程管理工具进行远程管理Mysql的错误及解决办法
  5. leetcode 385. Mini Parser | 385. 迷你语法分析器(Java)
  6. word List 09
  7. 企业实战_17_MyCat水平扩展_跨分片查询_ER分片
  8. 双表查询java代码_多表增删改查
  9. oracle常用用户权限,oracle创建新用户及授予常用权限
  10. 卷积神经网络CNN是靠什么线索学习到深度信息的?
  11. 点击按钮抓不到页面的参数
  12. php无限次执行函数,php – 防止多次执行JavaScript函数
  13. elasticsearch 关联查询_Elasticsearch字段类型之Range经典应用场景
  14. 黑苹果mac未能安装在你的电脑上_经历了无数次失败以后,我终于“吃”上了黑苹果,经验分享!...
  15. .plist 中各个key的含义
  16. python的localtime函数_python的内置函数time
  17. ios教程,用pc开发ios游戏
  18. 四 树莓派系统配置及进入图形桌面
  19. 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步
  20. iOS播放器SDK-基于FFmpeg解码OpenGL渲染-CYPlayer

热门文章

  1. BUUCTF:我吃三明治
  2. 多线程(十)多线程编程示例
  3. Android学习笔记:Android-Async-Http
  4. 为什么大多数大型网站不是用Java写的
  5. js websocket 前后端基础实现
  6. YOLOv5 backbone(一)
  7. 火墙(二)【iptables】
  8. php 方法function的引用
  9. 关于ORA-12170 tns 连接超时等一系列Oracle无法正常登入问题
  10. 解析Find My iPhone不能工作的原因