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

相关推荐

  • 基于centos7的http的应用

     练习:分别使用CentOS 7和CentOS 6实现以下任务         (1) 配置三个基于名称的虚拟主机;             (a) discuzX             …

    Linux干货 2016-10-12
  • linux多网卡绑定

    为了增加网络牢固性,linux服务器通过多块网卡来实现网卡冗余或链路聚合、负载均衡的技术。网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6常用的有三种mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援…

    系统运维 2016-06-23
  • Linux运维之路-Linux基础学习二

    Linux系统的一切皆文件思想会帮助我们学习

    2017-11-18
  • 很认真的第十三周作业哦

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程) mkdir /data #建立共享目录 1)共享名为shared,工作组为magedu vim /etc/samba/smb.conf 修改 workgroup = MYGROUP 为 workgroup = magedu 修改 passdb backend = tdbsam 为 pas…

    Linux干货 2017-03-27
  • 第一次作业

    第一次作业 作业1 博客 作业2 echo -e "\033[49;31;4;5m*******\033[0m \n\033[49;32;4;5m ***** \033[0m \n\033[49;33;4;5m  ***  \033[0m \n\033[49;34;4;5m   *   \033[0m&quo…

    Linux干货 2016-08-03
  • ftp的用户权限配置

    文件服务: 应用层:ftp; 内核级网络文件系统:nfs POSIX(可移植操作系统接口 Portable Operating System Interface of UNIX,缩写为 POSIX ) API(应用程序编程接口) 跨平台的网络文件系统:cifs (samba)   网络存储: NAS:NetworkAttached Stoage,文…

    Linux干货 2017-05-02

评论列表(1条)

  • wangnannan
    wangnannan 2016-08-12 20:00

    给个赞