第六周作业补充-vim简介及其使用方法详细介绍

vim.png

What

      Vim是由Vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在Unix& Unix Like操作系统中被广泛使用。和Emacs并列成为Unix& Unix Like操作系统中最受欢迎的文本编辑器

When& Who

      Vim的第一个版本由布莱姆·米勒在1991年发布

Vim的具体操作介绍

      Vim是模式化编辑器,其基本模式为:

            编辑模式,也叫命令模式

            输入模式

            末行模式:内置有命令行接口

      打开文件:

            # vim [OPTION] [file….]:如果文件不存在,创建文件

                  +#:打开文件后,直接让光标处于第#行的行瘦

                  /PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

 

      模式转换:

            编辑模式 à 输入模式

                  i, Insert:在光标所在处开始输入

                  a, append:在光标所在处后面开始输入

                  o:在光标所在处下方打开新的一行开始输入

                  I:在光标所在处行首开始输入

                  A:在光标所在处行尾开始输入

                  O:在光标所在处的上方打开一个新行

            输入模式 à 编辑模式

                  键盘上的”Esc”键

 

            编辑模式 à 末行模式

                  键盘上的“:”键

            末行模式 à 编辑模式

                  键盘上的”Esc”键

      如何关闭文件:

            ZZ 保存并退出

            :q 退出

            :!q 强制退出,不保存此前编辑的内容

            :wq 保存此前编辑的内容并退出

            :x 保存并退出

            :w /pat/to/somefile,将当前文件另存到指定路径    

 

      光标跳转:

            k键:上

            j键:下

            h键:左

            l键:右    

            #[k|j|h|l]:跳转有#自定个数的字符或者行数

 

      单词间跳转:

            w:下一个单词的词首

            e:当前或下一个单词的词尾

            b:当前或前一个单词的词首

            #[w|e|b]:跳转由#指定的单词个数

 

      行首行尾跳转:

            0:跳转至行首

            $:跳转至行首

            ^:跳转至行首第一个非空白字符

      行间跳转:

            #G:跳转至由#指定的行

            1G,gg:跳转至文件的第一行

            G:跳转至文件的最后一行

 

      句间跳转:

            ):下一句

            (:前一句

      段间跳转:

            }:下一段落

            {:前一段落

      翻屏:

            Ctrl+f:向文件尾部翻一屏

            Ctrl+b:向文件首部翻一屏

            Ctrl+d:向文件尾部翻半屏

            Ctrl+u:向文件首部翻半屏

            Enter:按行向后翻屏

 

Vim的编辑明令

      字符编辑:

            x:删除光标所在处的字符

            #x:删除以光标所在处为启始位置的#个字符

            xp:交换光标所在处字符与后面字符的位置

 

      替换命令:

            r:替换光标所在处的字符

      删除命令:

            d$:删除光标所在处至行尾的所有字符

            d^:删除光标所在处至行首非空白字符的内容

            dw:删除光标所在处字符至下一个单词词首的所有字符

            de:删除当前单词光标所在处字符至词尾内容或至下一个但单词词尾的所有字符

            db:删除光标所在处至前一个单词的词首字符的所有内容

            dd:删除一行

            #[d$|d^|dw|dw|de|db|dd]:删除由#为数字指定的命令内容

 

      粘贴命令:

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

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

 

      复制命令(yank, y)

            y:复制,工作行为类似于d命令

            y$:复制光标所在处至行尾的所有字符

            y^:复制光标所在处至行首非空白字符的所有内容

            yw:复制光标当前位置到下一个单词词首的所有内容

            ye:复制光标当前位置到下一个单词词尾的所有内容

            yb:复制光标当前位置到当前单词词首的所有内容

            yy:复制整行内容

            #[y$|y^|yw|ye|yb|yy]:复制由#指定为数字的命令的内容

      改变命令(change,c)

            使用c命令的同时,从 编辑模式 à输入模式,实现删除功能并转为输入模式

            c$:删除光标所在处至行尾的所有字符内容并转为输入模式

            c^:删除光标所在处至行首非空白字符的所有内容并转为输入模式

            cw:删除光标所在处至下一个单词词首的内容并转入输入模式

            ce:删除光标所在处至当前或下一个单词词尾的字符并转入输入模式

            cb:删除光标所在处至当前或前一个单词词首的字符并转入输入模式

            c0:删除光标所在处至行首的所有字符并转入输入模式

            cc:删除整行并转入输入模式

            #[c$|c^|cw|ce|cb|c0|cc|]:删除由#指定的命令内容

其他编辑操作:

            可视化模式:

                  v:按字符选定

                  V:按行选定

                  结合编辑命令:d,c,y

            撤销(undo, u)命令:

                  u:撤销此前的操作

                        #u:撤销此前的#次操作

                  Ctrl+r:撤销此前的撤销操作

                  .:重复前一个执行的编辑操作

末行命令模式

      地址界定:

      :start_pos[,end_pos]

            #:特定的第#行,例如”:5”:指定第5行内容

            .:当前行

            $:最后一行

            #,#:指定行范围。左边#为起始行,右边#为结束行

            #,+#:指定航范围。左边#为起始行绝对编号,右边+#为相对于左边#起始行的偏移量。例如5,+7:范围是从第五行到第12行的内容

                  .,$-1:当前行到倒数第二行

                  1,$:第一行到最后一行

            %:全文

            /PATTERN/:从光标所在处起始的文件向文件尾部查找第一次被模式匹配到的行

                  例如:/first/,$:查找光标所在处到行尾第一次被first匹配到的行

            /pattern1/,/pattern2/:从光标所在处起始第一次被pattern1匹配到的行,至第一次被pattern2匹配到的行之间的所有的行

            可结合编辑命令d,c,y,p一同实现编辑命令

            w /path/to/somefile:将范围内的文本保存至指定的文件中

            r /path/from/somefile:将指定文件中的文本读取至指定位置

 

      查找

            /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配的所有字符串

            ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配的所有字符串

                  n:查看下一个,与命令方向相同

                  N:查找上一个,与命令方向相反

      查找并替换

            s:末行模式的命令

            使用格式

                  s/要查找的内容/要替换的内容/修饰符

                        要查找的内容:可以使用正则表达式

                        要替换的内容:不可以所以用正则表达式,但可以引用

                 

                  修饰符:

                        i:忽略大小写

                        g:全局替换,意味着一行中如果匹配到多次,则均替换

                  可把分隔符替换为其他:

                        s@@@

                        s###

vim的多文件功能

      打开多个文件:

            vim FILE1 FILE2 FILE3….

                  文件间的切换:

                        :next 下一个文件

                        :prev 上一个文件

                        :first 第一个文件

                        :last 最后一个文件

                  退出所有的文件:

                        :wqall 保存所有文件并退出

                        :wall 保存所有文件

                        :qall 退出所有文件

 

      多窗口:

            -o:水平分隔

            -O:垂直分隔

            在窗口间进行切换:Ctrl+w, ARROW

            注意:单个文件也可以分隔为多个窗口进行查看

                  Ctrl+w,s:水平分隔窗口

                  Ctrl+w,v:垂直分隔窗口

 

定制vim的工作特性:

      注意:在末行模式下的设定,仅对当前vim进程有效

      如果要永久有效,需要更改配置文件:

            全局:/etc/vimrc

            个人:~/.vimrc

      行号:

            显示行号:set number,简写:set nu

            取消行号显示:set nomber,简写:setnonu

      括号匹配高亮

            匹配:set showmatch, set sm

            取消:set nosm

      自动缩进

            启用:set ai

            取消:set noai

      高亮搜索

            启用:set hlsearch

            禁用:set nohlsearch

      语法高亮          

            启用:syntax on

            禁用:syntax off

      忽略字符大小写:

            启用:set ic

            禁用:set noic

      获取帮助:

            :help

            :help subject

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

(0)
mxb93mxb93
上一篇 2016-09-26
下一篇 2016-09-26

相关推荐

  • Linux下which、locate、find 命令查找文件

    在Linux下我们经常要查找某个文件,但是又不记得文件位置,可以使用一些命令来搜索,目前接触到的文件命令有以下几个 which 查看可执行文件的位置 locate 基于数据库查找文件位置 find 实时搜索文件 1、 Which   语法:which 可执行二进制文件名称   Which是通过PATH环境变量查找文件的,在PATH 指定的…

    2017-08-14
  • 一键搭建mysql集群系列一

    一键自动安装mysql 5.7 shell脚本自动化安装二进制mysql-5.7 本节主要用到四个shell脚本 和 一台资料存储机器(IP:192.168.42.26) install_mysql.sh 自动化安装mysql脚本 ntpdate.sh 时间同步脚本 system_init.sh 系统初始化脚本 yum.sh yum源配置脚本 执行步骤: 1…

    2017-05-13
  • vsftpd, samba, nfs, mariadb

    2018/2/13 11:45 第十一周

    2018-02-13
  • 浅谈DNS基本原理以及实现方法(二)

             DNS作为互联网服务的一个基础型服务,了解和掌握DNS服务的原理和配置将是每一个运维人员必备的技能,这就如同闯荡江湖的侠客不但要有的招式,还要懂的运用这些招式的心法一样,接下来我将从DNS的正反向解析、主从同步、子域授权以及Bind view这四个方面来揭开它神…

    Linux干货 2015-12-19
  • N21沉舟14周作业

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

    Linux干货 2016-11-14
  • 源码编译nginx和Nginx的特性,配置文件指令说明

    nginx的官方站点 www.nginx.org Nginx:engine X Tenginx:Taobao enginx libevent:高性能的网络库 epoll(); Nginx特性  模块化设计,较好扩展性:但不支持模块的动态装卸载;Tenginx支持;  高可靠性   master –> …

    Linux干货 2017-04-30