vi和vim

vim是vi的升级版,支持vi的所有指令

vi的使用

vi分为三种模式:一般模式、编辑模式、命令行模式

一般模式

以vi打开一个文件就直接进入一般模式了,这个模式下可以使用上下左右按键来移动光标,可以删除字符、删除整行、复制和粘贴

编辑模式

一般模式下,不能编辑文件内容。按下“i,l,o,O,a,A,r,R”等任一字母后就会进入编辑模式,按下Esc可退出编辑模式

命令行模式

在一般模式中输入“:、/,?”这三个字符的任意一个,就可以将光标移动到最下面那一行。该模式下,可以进行读取、保存、大量替换符、退出vi、显示行号等操作

按键说明

移动光标的方法

Ctr+f 屏幕下移一页(Page Down)
Ctr+b 屏幕上移一页(Page Up)
0或home 移动到这一行的最前面
$或end 移动到这一行的最后面
G 移动到文件的最后
gg 移动到文件的第一行
N[Enter] 光标下移n行
/word 向下查找
?word 向上查找
n 重复前一个查找
N 反向查找

:n1,n2s/word1/word2/g

在第n1行和n2行之间查找word1并用word2替换
:n1,n2s/word1/word2/gc 同上,替换前给用户确认
:1,$s/word1/word2/g 第一行到最后一行,查找替换
x,X 在一行中,x为向后删除一个字符,X为向前删除一个字符
dd 删除光标所在一行
ndd n为数字,删除光标所在的向下n行(包括本行)
yy 复制光标所在的一行
nyy n为数字,复制光标所在的n行
p,P p复制在光标的下一行,P复制在光标的上一行
u 复原前一个操作
Ctrl+r 重做上一个操作
.

小数点,重复前一个操作

一般模式切换到编辑模式的可用按钮说明

i,l i为从目前光标处插入,l为在目前光标所在行的第一个非空字符处开始插入
a,A a为从光标所在的下一个字符插入,A为从光标所在行的最后 一个字符处插入
o,O o为在光标的下一行插入,O为在光标的上一行插入
r,R 进入替换模式,r只会替换一次光标所在的那个字符,R会一直替换下去

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

:w 保存
:w! 强制保存
:q 离开vi
:q! 强制离开不保存
:wq 保存后离开
:w [filename] 另存为filename
:r [filename] 编辑数据时,读入另一个文件数据,数据放在光标所在的下一行
:n1,n2 w [filename]

保存n1到n2行的数据到文件filename

:set nu 显示行号
:set nonu 取消行号

vim的保存文件、恢复与打开时的警告信息

vim在编辑文件时,会创建一个.filename.swap文件保存操作记录。

当vim编辑文件过程遭到意外时,该暂存文件不会消失。此时打开原文件可能显示如下:

E325: ATTENTION
Found a swap file by the name ".test2.txt.swp"
owned by: root dated: Thu Jun ::
file name: /tmp/wuchao_test/test2.txt
modified: YES
user name: root host name: localhost.localdomain
process ID:
While opening file "test2.txt"
dated: Mon Jun :: () Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
() An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r test2.txt"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".test2.txt.swp"
to avoid this message. Swap file ".test2.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

当vim一个文件时,如果检测到文件对应的暂存文件,就会显示以上信息,这时可以进行以下操作:

[O]:打开此文件为只读

[E]:以正常方式打开文件

[R]:加载暂存文件内容,救回之前未保存的内容

[D]:删除暂存文件

[Q]:退出

[A]:退出

vim的功能

vim除了具有以上vi的功能以外,还有自己的一些指令。

块选择

v 字符选择
V 行选择
Ctr+v 块选择
y 将选择部分复制
d 将选择部分删除

多文件编辑

:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个vim的打开文件

举例:

  /tmp/wuchao_test/下有两个文件,分别为inittab和hosts,现要将hosts文本的部分内容复制到inittab文件内去,操作如下:

[root@localhost wuchao_test]# vim ./inittab ./hosts

#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
# ~
~
:files
1 %a "./inittab" line 1
2 "./hosts" line 0
Press ENTER or type command to continue

在vim内输入“:file”可以查看目前编辑的文件,输入“:n”可以在多个文件内切换。

多窗口功能

设想我们需要编辑一个很大的文件时,我们想在一个文件内前后对照,或者多个文件对照时,如果通过上下翻页或者不停切换vim打开的文件,那也太麻烦了。vim提供了一个多窗口功能。

vim打开一个文件后,可以使用:sp [filename] 开启一个窗口打开另一个文件,如果打开本文件,直接输入:sp,可以使用Ctr+w+上下箭头 来切换窗口,Ctr+w+q退出当前窗口,:q也可以。

第10章 vim程序编辑器的更多相关文章

  1. 别人的Linux私房菜(10)vim程序编辑器

    很多软件的编辑接口会主动调用vi vi分一般命令模式.编辑模式.命令行模式. 使用vi :/bin/vi welcome.txt 下下端显示文本有多少行,多少字符, 一般命令模式: 上下左右移动光标k ...

  2. 鸟哥的Linux私房菜-第10/11/12/13章(vim程序编辑器、学习bash、正则表达式与文件格式化处理、学习Shell Scripts)

    第10章 vim程序编辑器 可以将vim看做vi的进阶版本,vim可以用颜色或底线等方式来显示出一些特殊的信息. 为何要学习vim?因为: a. 所有的 Unix Like 系统都会内建 vi 文书编 ...

  3. 第十章、vim 程序编辑器

    第十章.vim 程序编辑器   1. vi 与 vim 1.1 为何要学 vim 2. vi 的使用 2.1 简易执行范例 2.2 按键说明 2.3 一个案例的练习 2.4 vim 的暂存档.救援回复 ...

  4. vim程序编辑器---常用操作整理

    vim程序编辑器---常用操作整理 移动光标方法 o 在光标行的下一行,进入编辑模式 $ 移动到光标这行,最末尾的地方 G(大写) 移动到文件最末行 :set  nu 文件显示行数 :set  non ...

  5. 第十章 Vim程序编辑器学习

    1.Vim是进阶版的vi,vim不但可以用不同颜色显示文字内容,还能进行诸如shell script,C program等程序编辑功能. 区别:vi是老师的字处理器,不过功能已经很齐全,但还是有可以进 ...

  6. 攻城狮在路上(叁)Linux(三十一)--- vim程序编辑器

    本篇主要介绍vim编辑器的使用方式,具体内容后续补充.

  7. 第十章 Vim程序编辑器学习(下)

    在试用vim编辑时,vim会在于被编辑的档案的目录下,再建立一个名为****.swp的档案,如果你的系统因为某些原因断线,你编辑的档案还没有存储,这个时候的****.swp就能够挥发救援的功能 1.在 ...

  8. Vim程序编辑器

    Vim的三种模式: 1) 一般模式 以 vi 打开一个档案就直接进入一般模式了(这是默认的模式).在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内 ...

  9. 鸟哥私房菜基础篇:vim 程序编辑器习题

    猫宁!!! 参考链接:http://cn.linux.vbird.org/linux_basic/0310vi.php 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-我用 vi 开启某个档案后,要在 ...

随机推荐

  1. php 二位数组排序

    $member_ship_level 是一个二维数组 $res = array_column($member_ship_level,'integral'); array_multisort($res, ...

  2. STM32F4XX中断方式通过IO模拟I2C总线Master模式

    STM32的I2C硬核为了规避NXP的知识产权,使得I2C用起来经常出问题,因此ST公司推出了CPAL库,CPAL库在中断方式工作下仅支持无子地址 的器件,无法做到中断方式完成读写大部分I2C器件.同 ...

  3. 关于STM32 DMA相关总结[概述知识点]

    关于DMA相关知识的总结,写给未来的自己,希望有帮助.立个Flag[坚持写博客总结自己工作或学习记录自己的生活] ------------------------------------------- ...

  4. SparkStreaming任务保持运行,定时任务监控进程,保证不挂掉

    cron任务:每隔1分钟启动脚本,检查进程是否运行.crontab -e */1 * * * * bash /data/spark/test.sh 检查进程,如果进程挂掉,重新启动Spark任务:给s ...

  5. 20155206 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告

    20155206 <JAVA程序设计>实验二(JAVA面向对象程序设计)实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...

  6. C#基础之继承

    继承是在类之间建立一种相交的关系,使得新定义的派生类的实例可以继承已有的基类的特征并且还可以添加新的功能.以前对继承的理解仅仅限于定义,下面是我查了些资料.写了点代码的总结. 1.C#继承的特点 (1 ...

  7. 初识JMM

    目录 what is JMM? JMM变量存储结构 JMM三大特性 原子性 可见性 有序性 java 堆栈 静态存储 栈式存储 堆式存储 JVM是啥 参考<Inside JVM> what ...

  8. [Ubuntu] <uptime>命令

    uptime 命令 就是查看系统启动时间的,前几个大家应该都很熟悉:当前时间.系统启动时间.正在登陆的用户数 最后的三个数字,分别代表过去 1分钟  5分钟  15分钟  的平均负载(Load Ave ...

  9. Unity学习笔记(1)

    transform: transform是GameObject的一个默认的组件,其包含着该对象的几种属性,坐标(Position)以及旋转角度(Rotation)和尺寸(Scale). transfo ...

  10. 小白初识 - 计数排序(CountingSort)

    计数排序,属于桶排序特殊的一种. 当要排序n个数据的时候,如果所处的范围不大,我们可以取其中的最大值K,并将数据分散在K个桶里面, 每个桶里面的数据都是相同的(这样省去了桶内排序的时间),然后顺序取出 ...