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

相关推荐

  • 使用groupmems -l -g 组名选项遇到的问题

    groupmems -l -g 组名 显示的不是附加组的成员,而是显示的是/etc/group文件的最后一个字段的内容

    Linux干货 2017-11-23
  • liunx文本处理三剑客及文本处理工具的使用与练习。

    linux文本处理三剑客: grep ==擅长过滤,把想要的或者不想要的分离开。linux三剑客 老三  -A: 除了显示匹配的一行之外,并显示该行之前的num行;-B:除了显示匹配的一行之外,并显示该行之后的num行;-C:除了显示匹配的一行之外,并显示该行之前后各num行     sed==擅长取行、替换。三剑客老…

    2017-07-28
  • Linux文件管理及bash特性详解

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。  文件管理工具:cp,mv,rm       cp命令:copy       源文件:目标文件  单源复制:cp [OPTION]… [-T] SOURCE DEST  多源复制:…

    Linux干货 2016-11-06
  • 链接分析算法之:主题敏感PageRank

      前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所…

    Linux干货 2016-02-17
  • class17 网络管理(二)

    IP 地址 它们可唯一标识IP网络中的每台设备 每台主机(计算机、网络设备、外围设备)必须具有唯一的地址           IP 地址由两部分组成:     • 网络ID:   …

    Linux干货 2016-09-06
  • N26-第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -a /etc/skel   /home/tuser1 [root@localhost ~]# chmod go-r  -R /home/tuser…

    Linux干货 2017-02-22

评论列表(1条)

  • wangnannan
    wangnannan 2016-08-12 20:00

    给个赞