设为首页 收藏本站
查看: 518|回复: 0

[经验分享] Vim编辑器详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-21 09:46:23 | 显示全部楼层 |阅读模式
一、vim基础特性操作
   1.vim是一种模块化文本编辑器:纯文本信息,ASCII text
   2.vi和vim关系
        vi:Visual Interface
        vim:VI Improved,增强版的vi编辑器,但部分小的Linux系统不一定支持
   3.基本模式转化(编辑模式、输入模式、末行模式)
        (1)编辑模式:默认模式
   编辑模式 --> 输入模式:
i:insert,在光标所在处输入;
           a:  append,在光标在处后方输入;
o:在光标所在处的下方打开一个新行;
I: 在光标所在行的行首输入;
A:在光标所在行的行尾输入;
O:在光标所在处的上方打开一个新行;
       (2)输入模式 --> 编辑模式 ESC
       (3)编辑模式 --> 末行模式   :
       (4)末行模式 --> 编辑模式  ESC
wKioL1Zz-UnTilGzAAAe0zI-mDo708.jpg
   4.打开/关闭文件
       (1)打开文件
               # vim  [options]  [file ..]
                     +:直接打开到文件尾部
        +#:打开文件后,直接让光标处于第#行的行首;
        +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;
       (2)关闭文件
   ZZ:保存并退出;(编辑模式)
    :q  退出
    :q!  强制退出,不保存此前的编辑操作
    :wq  保存并退出;
:w,:q
    :x  保存并退出;
   :w /PATH/TO/SOMEFILE  另存为
  5.光标跳转操作
       (1)字符间跳转
h:左   j:下   k:上   l:右
    #COMMAND:跳转由#指定的个数的字符,#h、#j、#k、#l;
       (2)单词间跳转
w:下一个单词的词首;
e:当前(光标在本单词中间)或后一个单词的词尾;
b:当前(光标在本单词中间)或前一个单词的词首;
  #COMMAND:跳转由#指定的个数的单词,#w、#e、#b;
      (3)行首行尾跳转
  ^:跳转至行首的第一个非空白字符,相对行首;
  0:跳转至行首,绝对行首;
  $:跳转至行尾;
      (4)行间跳转
   #G:跳转至由#指定的行;
  1G,gg:第一行;
    G:最后一行;
      (5)句间跳转:
  ) :光标移至句尾
  (  :光标移至句首
      (6)段间跳转
  } :  光标移至段落最后一个字母
  { :  光标移至段落第一个字母
   6.翻屏操作
    Ctrl+f:向文件尾翻一屏
    Ctrl+b:向文件首部翻一屏
    Ctrl+d:向文件尾部翻半屏
    Ctrl+u:向文件首部翻半屏
    Enter:按行向后翻



二、编辑模式操作
   1.字符编辑
        x:删除光标所在处的字符;
       #x:删除光标所在处起始的#个字符;
       xp:交换光标所在处的字符与其后面的字符的位置;
   2.替换命令
       r:替换光标所在处的字符;
rCHAR,替换光标所在处的字符为CHAR
   3.删除命令
       d:删除命令,可结合光标跳转字符,实现范围删除;
   d$:删除到行尾
   d^:删除到行首
   d#w:删除到下#个单词词首
   d#e:删除到当前或后一个单词的词尾  
   d#b:删除到当前或前一个单词的词首;
       dd:删除光标所在处的行;
#dd:删除光标所处的行起始的共#行;
   注意:删除内容不会被直接清空,放置缓存区域,但只能接着操作且操作最近一次缓存
   4.粘贴命令
         p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;
                否则,粘贴至当前光标所在处的后方;
         P:和p正好相反
   5.复制命令(yank,y)
           y:复制,工作行为相似于d命令;
y$、y^、y0、y#e、y#w、y#b
yy:复制一整行
#yy:复制#行
   6.改变命令(change,c)
c:编辑模式 -->输入模式,实现删除操作;
c$、c^、c0、c#b、c#e、c#w
cc:删除光标所在的行,并转换为输出模式;
#cc:删除光标所在的#行,并转换为输出模式
   7.可视化模式
            v:按字符选定;
V:按行选定;
结合编辑命令使用:d,c, y
   8.撤销操作(undo)
           u:撤销此前的操作; 默认可内存中进行撤销操作50次
          #u:撤销此前的#个操作;
   9.取消此前的撤销操作:Ctrl+r
   10.重复此前编辑操作:  .



三、末行模式操作
   1.地址定界
       (1) :start_pos[,end_pos]
   #:特定的第#行,例如5即第5行;
   .:当前行;
   $:最后一行;
   #,#:指定行范围,左侧为起始行,右侧为结束行;
  #,+#:相对定界,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量
             .,$-1:当前航到最后一行
   1,$:全文
  %:全文
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
/pat1/,/pat2/:当前光标出开始第一次由pat1和pat2匹配到的行结束之间的所有行;
       (2)可同编辑命令一同使用,实现编辑操作:
d、y、c
     w  /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
     r   /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;
   2.查找
        /PATTERN:当前光标处向文件尾部查找能够被当前模式匹配到的所有字符串;
       ?PATTERN:当前光标处向文件首部查找能够被当前模式匹配到的所有字符串;
    n:下一个,与命令方向相同;
    N:上一个,与命令方向相反;
   3.查找并替换
        默认不做全局替换,之替换每一行第一次匹配到的模式
            s:末行模式的命令;
使用格式:s/要查找的内容/替换为的内容/修饰符
     (1)要查找的内容:可使用正则表达式;
     (2)替换为的内容:不能使用下则表达式,但可以引用;
“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
  直接引用查找模式匹配到的全部文本,要使用&符号;
       (3)修饰符:
    i:忽略大小写;
   g:全局替换,意味着一行中如果匹配到多次,则均替换;
       (4)可把分隔符替换为其它非常用字符:s@@@、s###.0



四、vim多文件功能
   1.多文件
          vim  FILE1  FILE2 ...
     (1)在文件间切换:
:next  下一个
:prev  上一个
:first   第一个
:last   最后一个
     (2)退出所有文件:
:wqall保存所有文件并退出;
:wall  、:qall
   2.多窗口
          -o:水平分割窗口
          -O:垂直分割窗口
          在窗口间切换:Ctrl+w,ARROW
  注意:单个文件也可以分割为多个窗口进行查看:
   Ctrl+w,s:水平分割窗口
   Ctrl+w,v:垂直分割窗口



五、设置vim工作特性命令
      1.行号:set number,set nu;set nomber, 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.获取帮助::help;:help subject
  注意:末行模式下的设定进对当前vim进程有效
永久有效设置方法:
       全局:/etc/vimrc
       个人:~/.vimrc(默认可能不存在,需自行创建)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-154123-1-1.html 上篇帖子: Ext系列文件系统inode和block详解 下篇帖子: RHEL7网络管理相关的命令 编辑器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表