vim简单总结

编辑器种类

常用的文本编辑器有:

  • 行编辑器,如sed,awk,cut等

  • 全屏编辑器,如vi,vim(vi增强版),nano等

vim的模式

  • 命令模式:使用vim filename打开文件后,进入的第一个模式。

    • 直接使用键盘操作文本的编辑

  • 插入模式:INSERT模式

    • 进入:i,从当前光标处开始

    • 进入:I,从当前行行首开始

  • 末行模式:vim内置命令接口。

    • 以:开头命令

  • 替换模式:replace。会将光标所在的地方,替换为输入的内容。

    • 进入:在命令模式下,输入R命令,进入替换模式。

    • 输入r命令,则只能替换一次

  • 可视化模式:代替鼠标进行选定。搭配命令模式的一个命令作为结尾

    • v 字符为单位

    • V 行为单位

    • c+v 面向块

    • visual模式下,可配合w,),}等使用

  • 多窗口模式

  • 锁屏

    • ctrl+s,vim锁屏

    • 锁屏后,屏幕中,vim显示的内容,无论输入什么,显示的内容都不会变化。

    • 锁屏后的所有输入,都会被记录,并且在解锁后,执行。同未锁屏相同的效果

    • ctrl+q,解锁

打开文件

  • -m 只读模式打开文件,文件被编辑后不能够保存,只能够强制退出 
    vim简单总结

    • 其他的一个只读模式——使用view替换vim打开文件,文件被编辑后,可以用:wq!来强制保存退出 
      vim简单总结

  • -d file1 file2 对比两个文件,不同的地方显示高亮 
    vim简单总结vim.1.png

  • vim +[num] 文件打开后,光标直接跳到第num行的行首,如果没有指定num,则光标跳到文件的最后一行的行首

  • vim +/pat 打开文件后,光标跳到第一个匹配{pat}的行的行首 
    tips

  • 如果vim DIR,也同样可以进入,同样可以编辑,但是无法保存。 
    Linux同一个目录下,不能有同名的文件夹或文件

  • 显示:标准屏幕显示20行

末端模式命令

:wx 见标题:编辑完成后 
:r /path 在光标所在行之后,新建行,并 读入文件 
:!cmd 在vim中执行bashshell的命令(并不会插入) 
:r ! cmd 或者 :r!cmd 在当前行之后插入命令执行结果

定位,跳转

单词跳

  • w    下一个单词词首

    • #w    下面的#个单词词首

  • e    下一个单词词尾

    • #e    下#个单词词尾

  • b    前一个单词的词首

    • #b    前#个单词词首

字符跳

  • h 向左跳一个字符

    • [num]h 向左跳[num]个字符

  • j 向下跳一个字符

    • [num]j 向下跳[num]个字符

  • k 向上跳一个字符

    • [num]k 向上跳[num]个字符 
      tips: 
      Japan在Korea下面,J向下,K向上

  • l 向右跳一个字符

    • [num]l 向右跳[num]个字符

多行跳

  • H(HIgh) 当前页第一行的行首

    • [num]H 当前页第[num]行的行首

  • L(low) 当前最后一行的行首

    • [num] L 当前页倒数第[num]行的行首

  • M(middle) 当前页中间一行的行首

  • \^ 行首(不算空格)

  • 0 绝对行首

  • $ 绝对行尾

  • G 文章最后一行行首

    • [num]G 第[num]行行首

  • :[num] 文章的第[num]行

  • 文章第一行 1G,:1,gg

  • ( 前一句(以.为分隔)

  • ) 后一句

  • { ·前一段

    • 两行之间只有回车,不算段落,必须之间有一个空行,才算是不同段落。

  • } 后一段

屏幕为单位

  • c+f 前进一屏

  • c+b 后退一屏

  • c+d 前进 半屏

  • c+u 后退半屏

命令模式快捷键

  • x

    • #x

  • d

    • #d

  • y复制字符

    • #y

  • yy 复制行

    • #yy

  • c替换

    • #c

  • C删除到光标所在行尾,并切换到insert模式

    • #C

  • gu(变小写),

  • gU(变大写)的相关操作、 
    NOTES: 
    [num]gu/gU,操作num+1行,并且num默认为1,即gu/gU至少操作两行 
    在组合模式中:0gU$将本行从行首到行尾都转换为大写

  • ~大小写转换

这些命令通常都可以与地址定界符相结合使用,以d为例,如下: 
d$ 
d^ 
dH 
dL 
dM 
dw 
de 
db 
d) 
d} 
d( 
d{ 
dgg 
dG 
d1G 
还可以在命令前后都添加地址定界符,语法为: 

  • J 去掉行尾的回车符,将不同的行转换为同一行

  • p 在光标之后粘贴

  • P在前面粘贴

  • u 撤销

    • u 撤销

  • U 撤销光标落在这一行后,对此行所做的所有更改

  • c+r 取消刚才的撤销,

  • . ()英语的句) 重做

  • [num]. 重做num次,默认为1

地址定界

  • :#

  • :#1,#2

  • :#1,+#2

  • :. 当前

  • :$ 最后一行

  • :$-1 倒数第二行

  • %或者‘:1,$’ 第一行到最后一行

  • :/pat1/,/pat2/d删除第一个匹配pat1到第一次匹配pat2之间的行。

  • :#,/pat3/从第#行开始,到第一次匹配pat3,之间的行

vim的命名寄存器

vim一共有26个(a-z),1个无命名寄存器(默认寄存器)

  • “a表示后续的操作在a寄存器中操作

  • “ayy复制当前行,到a寄存器

  • 3“ayy表示复制3行到a寄存器中

  • 默认情况使用的是无命名寄存器

“ap粘贴a寄存器的内容到当前航

编辑完成后

  • :x= 相当于:wq,但是尽量别用x,因为x的使用,会产生不安全因素

  • ZZ 存盘退出

  • ZQ 不存盘退出

  • :w /path 存内容到path文件,vim打开的文件不会变。

多窗口模式

打开方法

- vim file1 file2 file3
- vim -o 打开横向
- vim -O 打开多个竖向
- vim -p 打开多个tag

切换方法

  • 命令模式:c+w+向下

  • 命令模式:c+w+向上

  • :next

  • :prev

  • :last

  • :first

  • :wqall

  • c+w+v 左右

  • c+w+s 上下

关闭窗口

  • c+w+q取消相邻窗口。

  • c+w+o取消全部其他窗口

模式转换

  • a 追加模式,在当前光标所在字符之后插入(光标跳到当前字符之后的一个字符,并进入INSERT模式)

    • 如果当前行包含一个字符(即使是空白字符也可以),在该字符之后插入

    • 如果当前行为空白行(连空白字符都没有,直接就是回车),直接插入

  • A 光标到当前行最后一个字符

  • i 光标位置不变,在当前光标之前插入

  • I 光标自动跳到行首

  • o 在当前行后,新建一行

  • O 在当前行前,插入一行

  • R 进入替换模式,会将光标所在位置的字符替换为输入字符

  • r 单字符替换模式,只替换一次

other notes:

  • vim打开passwd文件或者其他文件,经常会有额外的提示

    这种现象的原因往往是上次使用该文件的时候异常退出导致的。这种异常退出,会使原本打开时生成的缓存文件.passwd.swap文件,没有被正常删除。 
    只要删除了隐藏文件.filename.swqp就可以了

  • 关于vim打开文件后的各种颜色

    在/etc/文件下打开文件,一般都是有颜色的。vim会自动给那些它认为有意义的文件颜色。这些文件,要么是有结尾标识(比如.sh),要么在文件中有标识(比如#!/bin/bash),要么在特定的文件夹下面(比如/etc/下通常被识别为配置文件)。如下:


vim.2.pngvim.3.png

原创文章,作者:m20-吴清玲,如若转载,请注明出处:http://www.178linux.com/36414

(0)
m20-吴清玲m20-吴清玲
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相关推荐

  • 软件包管理 — rpm & yum

    软件包管理 包管理器     二进制应用程序的组成部分:         二进制文件、库文件、配置文件、帮助文件     程序包管理器:      &…

    Linux干货 2016-08-24
  • 自制linux系统

    本文主要通过裁剪现有Linux系统,打造一个属于自己的Linux小系统,让其能够装载网卡驱动,并配置IP地址,实现网络功能。 自制linux系统 步骤概述: 1、新建一个硬盘2、在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3、格式化并且挂载两个分区4、安装grub至目标磁盘5、为grub提供配置文件6、复制内核文件和initrd文件7、创建目标…

    Linux干货 2016-09-13
  • LVS集群讲解

    目录 LVS介绍 LVS集群类型 LVS调度算法 ipvsadm/ipvs LVS-NAT模型演练 LVS-DR模型演练 LVS定义多集群 FWM实现多集群统一调度 LVS持久连接  每端口持久 每FWM持久 每客户端持久 LVS介绍 一般来说,LVS采用三层结构:负载调度器、服务器池、共享存储。工作在TCP/IP协议的四层,其转发是依赖于四层协议…

    Linux干货 2016-11-07
  • 程序包的编译安装

    程序包的编译安装 之所以需要安装编译程序包,是为了能及时更新程序包,制作好的rpm包,版本一般都有点老了,所以编译安装是必报的,而且我们可以自己定义安装路径,想卸载直接删除就KO了; 在centos7.3环境下安装apache http服务: 1.首先获取最新的apache源码包下载到/root目录下; 2.检查安装环境,没有就安装环境:   记住…

    Linux干货 2017-03-09
  • 第八周网络基础以及脚本联系

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 ![](http://i.imgur.com/5u2IMF8.png) 三层交换机:将路由技术和交换技术合二为一的技术,当对第一次数据流进行路由后,会产生一个MAC地址与IP地址相对应的映射表,当同样的数据流再次通过时,将根据映射表进行数据交换而不在进行路由。 路由器:工作于网络…

    Linux干货 2017-03-30
  • 第十四周作业

    系统的INPUT和OUTPUT默认策略为DROP; [root@CentOS7 ~]# iptables -P INPUT DROP [root@CentOS7 ~]# iptables -P OUTPUT DROP 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服…

    Linux干货 2017-08-13