Vim

vim编辑器

        vim,可谓文本编辑界的大哥,功能强大无比,是进阶版的vi, vim 不但可以用不同颜色显示文字内容,还能够进行诸如 shell script, C program等程序编辑功能。

vim是一种模式化的编辑器  (vim自带教程,命令行中输入vimtutor即可)

vim基本模式:

命令模式(默认模式)

     功能:移动光标,复制、输入命令来完成等操作

     输入命令时没有可视信息,直到命令输入完成后系统自动执行

输入模式(编辑模式)

        功能:修改文本内容

扩展命令模式(内置命令行接口)

        功能:查找替换、保存退出等

blob.png

 

打开文件:

#vim [options] [file…]

+#:打开文件后光标自动跳转到指定的行数
    [root@CentOS 7 test]# vim +10 passwd//进入文件光标自动在文件的第10行
+/PATTERN:打开文件后,光标直接处于第一个被PATTERN匹配到的行的行
    [root@CentOS 7 test]# vim +/^ftp passwd  
       //打开文件光标在第一次匹配到以ftp开头的行的行首

关闭文件:(扩展命令模式下)

命令(默认)模式下:

    按shift+zz即可保存并退出,shift+zq即退出不保存。

扩展命令模式下:

q:退出不保存(未更改文件内容前)
q!:强制退出不保存(用于已修改文件后)
wq:保存并退出
x:保存并退出
//以上4个直接在扩展命令模式中的冒号输入确认即可
w  /path/to/somefile:将文件另存为到指定文件
   编辑文件,在扩展命令模式下输入保存地址即可,保存后可看到提示信息
 :w /test/passwd2   //保存的地址
"/test/passwd2" [New] 39L, 2026C written  
  //提示信息(新文件“/test/passwd2”写入39行,2026个字节)
  
r  /path/form/some: 读取指定文件内容到当前编辑文件
需要在正在编辑的文件中添加其他文件的内容,可在扩展命令模式下,输入下面的命令即可导入
    :r /etc/issue   //在扩展命令行模式下导入/etc/issue文件内容到当前正在编辑的文件中

模式转换:在进行模式转换时的光标位置命令

命令模式——输入模式   

i: insert 在光标所在处输入
I:在当前光标所在行的行首输入
a: append, 在光标所在处后面输入
A:在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行

光标跳转:(命令(默认)模式下进行)

    字符间跳转:(在命令模式(默认)下直接输入即可左右上下移动)

左(h)、右(l)、前(j)、后(k)

#(h/l/j/k):跳转#个指定方向的字符  
     #10h  
 //向左移动10个字符(直接在默认模式下输入即可,没有可视的信息,命令输入完之后会自动执行)

    

     单词间跳转: (命令(默认)模式下进行)

w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
# command:由#指定一次跳转的单词数
    #(w/e/b): 指定跳转单词数
        #5w  //跳转到5个单词的最后一个单词词首

       行首行尾跳转:(命令(默认)模式下进行)

^:跳转至行首的第一个非空字符
0:跳转至行首,不识别空格直接到第一个字符
$:跳转至行尾

        行间跳转:(命令(默认)模式下进行)

#G:跳转至由#指定的行
      #10G   //跳转到第10行
1G/gg:跳转至第一行

Vim编辑命令:(命令(默认)模式下进行)

      字符编辑:(命令(默认)模式下进行)

x:删除光标所在处的字符
#x:删除光标处起始指定的#个字符
xp:光标当前所在位置的字符与后面的字符转换位置(两个字符互换)

      替换命令:(命令(默认)模式下进行)

r:替换光标处的字符

      删除命令:(命令(默认)模式下进行)

       d:删除命令,可结合光标跳转来实现删除
       d $:删除光标处向后的所有字符(行
       d^:删除光标处向前的所有字符(行)
       dw:删除向后指定的多少个单词       如:d3w  //删除3个单词
       de:删除向后的单词
       db:删除向前的单词
       dd:删除当前的一整行     //3dd,删除3行

      复制命令:(命令(默认)模式下进行)

y:复制(复制,工作行为相当于d命令)
      y$,y^,yo,ye,yw,yb,#command
yy:复制一整行

       粘贴命令:(命令(默认)模式下进行)

p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方,否则,则粘贴在当前光标所在处的后面
P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方,否则,则粘贴在当前光标所在处的前面

可视化操作:(命令(默认)模式下进行)

v:按字符选定
V:按行选定


撤销操作:(命令(默认)模式下进行)

u:撤销此前的操作
#u:撤销#次操作
      #4u:撤销4次
ctrl+r:撤销此前的撤销操作
 .   :重复执行前一个编辑命令

扩展命令模式:

1.地址定界:

:start_pos,end_pos
#: 具体第#行,例如2表示第2行;
#,#: 从左侧#表示行起始,到右侧#表示行结尾
#,+#: 从左侧#表示的行起始,加上右侧#表示的行数
: 2,+3 表示2到5行
.: 当前行
$: 最后一行
.,$-1 当前行到倒数第二行
%:全文, 相当于1,$
/pat1/,/pat2/
从第一次被pat1模式匹配到的行开始,一直到第一次被
pat2匹配到的行结束
#,/pat/
/pat/,$
w file: 将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容

查找

/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向

查找替换

s: 在扩展模式下完成查找替换操作
格式: s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...
等后向引用符号;还可以使用“ &引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 全局替换;默认情况下,每一行只替换第一次出现
gc:全局替换,每次替换前询问
 查找替换中的分隔符/可替换为其它字符,例如
s@/etc@/var@g
s#/boot#/#i

vim的寄存器:

    有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。

用a, b,&,z表示,用寄存器表示,放在数字和命令之间如: 3"tyy 表示复制3行到t寄存器中"tp 表示将t寄存器内容粘贴未指定,将使用无命名寄存器

    有10个数字寄存器,用0, 1, &, 9表示, 0存放最近复制内容, 1存放最近删除内容。当新的文本变更和删除时, 1转存到2, 2转存到3,以此类推。数字寄存器不能在不同会话间共享。

可视化模式:

允许选择的文本块
v 面向字符
V 面向行
ctrl-v 面向块
可视化键可用于与移动键结合使用:
w, ) , } ,箭头等
突出显示的文字可以被删除,复制,变更,过滤,搜索/替换

多文件模式:

vim FILE1 FILE2 FILE3 …

:next 下一个
:prev 前一个
:first 第一个
:last 最后一个
:wall 保存所有
:qall 退出所有
:wqall

使用多个窗口

多文件分割

vim -o|-O FILE1 FILE2 ...
-o: 水平分割
-O: 垂直分割
在窗口间切换: Ctrl+w, Arrow

单文件窗口分割:

Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
: wqall 退出

定制vim工作特性

配置文件:永久有效

全局: /etc/vimrc
个人: ~/.vimrc

扩展模式下输入:当前vim进程有效

(1) 行号
    显示: set number, 简写为set nu
    取消显示: set nonumber, 简写为set nonu
(2) 括号成对匹配
    匹配: set showmatch, 简写为set sm
    取消: set nosm
(3) 自动缩进
    启用: set ai
    禁用: set noai
(4) 高亮搜索
    启用: set hlsearch
    禁用: set nohlsearch
(5) 语法高亮
    启用: syntax on
    禁用: syntax off
(6) 忽略字符的大小写
    启用: set ic
    不忽略: set noic
(7) 文件格式
    启用: fileformat=unix
    不忽略: fileformat=dos
(8) 设置文本宽度
    :set textwidth=65 (vim only)
    :set wrapmargin=15
    :help option-list
    :set or :set all

原创文章,作者:Lii,如若转载,请注明出处:http://www.178linux.com/32086

(0)
LiiLii
上一篇 2016-08-09
下一篇 2016-08-09

相关推荐

  • Week 1 Linux Intro

    I.  Linux的各种发行版 All Kinds of Linux     在Linux诞生的20多年里,Linux衍变出了许许多多的版本,每个都有自己的名字,但它们的本质和它们的哲学观还是一样的。下面是从外网上扒下来的一张Linux进化图,跨度一直到了2016年。    &n…

    Linux干货 2016-06-26
  • LVM(逻辑卷管理)

    LVM 逻辑卷管理 概述:      LVM是将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为…

    Linux干货 2016-09-05
  • 定时任务的完成contab

    采用crontab来完成 利用crontab来定时执行任务大致有如下三步: 1、编写shell脚本 2、利用crontab加入到定时任务队列 3、查看作业完成情况 一、如何建立shell脚本 Linux下有很多不同的shell,但我们通常使用bash(bourne again shell)进行编程,因为bash是免费的并且很容易使用 程序必须以下面的行开始(…

    Linux干货 2016-08-11
  • IT基础设施工具—Puppet

    一、Puppet简介 Puppet是一款使用GPLV2X协议授权的开源管理配置工具,基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,既可以通过客户端—服务器的方式运行,也可以独立运行。Puppet适用于服务器管的整个过程 ,比如初始安装、配置更新以及系统下线。puppet可以为系统管理员提供方…

    Linux干货 2017-11-26
  • 最近了解到的命令

    ssh:secure  shell shell  人机交互的语言查询当前系统使用了哪个shell(接口程序) echo $SHELL 查询当前系统已安装的所有shell cat /etc/shells Shell提示符 whoami 显示当前的登录用户名 hostname 显示当前的主机名      pwd …

    Linux干货 2017-07-13
  • 笔记三、如何在VMWare Workstation中安装CentOS 7

    一、准备工作     1.1 安装VMWare WorkStatrion     1.2 准备好CentOS 7 镜像包     http://www.centoscn.com/CentosSoft/iso/    CenOS7下载地址 二…

    2017-02-23

评论列表(1条)

  • wangnannan
    wangnannan 2016-08-12 20:00

    给个赞