admin 管理员组

文章数量: 887021

目录

一、vi和vim命令

1.1、命令模式

1.1.1、vi清空文本所有内容

1.2、插入模式(编辑模式)

1.3、底行模式

1.3.1、替换文本内容

1.3.2、查找符合要求的字符串并执行相应操作(以行为单位)

1.4、其他

1.4.1、多窗口同时编辑(退出要退多次)

1.4.2、vim缓存文件(锁文件)

1.4.3、vi/vim 键盘图

1.4.4、批量修改文件内容

1.4.5、不要用vim打开大文件

1.4.6、定制vim的工作特性:


 

vim 配置文件位置: /etc/vimrc

 

一、vi和vim命令

  vi有三种模式(互相切换)

1.1、命令模式

      

       i   --- 表示从光标所在位置进入编辑状态   

       I   --- 表示将光标移动到一行的行首,再进入编辑状态

       o   --- 在光标所在行的下面,新起一行进行编辑

       O   --- 在光变所在行的上面,新起一行进行编辑

       a   --- 将光标移动到右边的下一个字符,进行编辑

       A   --- 将光标移动到一行的行尾,进入到编辑状态

       C   --- 将光标到行尾内容进行删除,并进入编辑状态

       cc  --- 将整行内容进行删除并进入编辑状态

       r   --- 直接替换

       u   --- 输错信息,回撤操作

(多次按u可以回滚多次操作,也可以用Nu撤销指定撤销多少次操作(可以回滚到原始内容,提示Already at oldest change为止)

       Ctrl + r   --- redo 回撤操作

       G   --- 将光标快速切换尾部

       gg  --- 将光标快速切换首部

       ngg --- 表示移动到第几行

y$  --- 复制光标到行尾  

       $   --- 将光标移动到一行的结尾

       0 或者 ^  --- 将光标移动到一行的行首

       dG   --- 将光标所在位置内容,到行尾信息全部删除

       p    --- 将内容进行粘贴(粘贴在光标下一行)

       P(大写)   --- 将内容进行粘贴(粘贴在光标上一行)

       yy   --- 复制一行内容

       3yy  --- 复制多行内容(从光标位置开始,总共复制3行)  

       dd   --- 将一行内容进行删除(剪切)  

       3dd  --- 将多行内容进行删除(剪切)  

       x    --- 删除一个字符(光标所在位置)      

       X(大写)  ---删除一个字符(光标所在位置前面的一个字符)   

j 或者 方向键↓ ---向下移动一行(向下移动30行:30j)

       k 或者 方向键↑ ---向上移动一行

       w ---跳到光标所在单词的下一个

b --- 跳到光标所在单词的上一个

W --- 跳到光标所在单词的下一个(跳过字符)

B ---跳到光标所在单词的上一个(跳过字符)

ctrl + b  --- 翻转到上一页

ctrl + f  --- 翻转到下一页

D  --- 删除光标所在单词后所有内容,至行末

J  --- 合并下一行

ggVG  --- 全选文本内容

v  --- 可视化模式是非常有用的一种模式,在普通模式下按v即可进入。

使用h(左)、j(下)、k(上)、l(右)进行漫游,选中相应的内容。

按ESC退出

 

1.1.1、vi清空文本所有内容

gg

加上

dG

 

1.2、插入模式(编辑模式)

 

esc --- 退出编辑模式

1.3、底行模式

 

       :wq  --- 保存并退出

       :w   --- 保存

       :q   --- 不保存退出

       :wq!  --- 强制保存退出

       :wqa  --- 保存所有文件并退出

       :q!  --- 强制退出

:nohl  ---  取消高亮    

        /      ---  进入搜索状态(向下搜索 n依次向下,N是向上)

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

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

 

        :set nu   --- 显示行数

:set nonu   --- 取消显示行数

 

%s#\s##g  --去掉空白格(\r 是换行符)

 

:!command   --- 暂时离开vim的编辑环境,去执行后面的Shell命令(例如要列出根目录下包含文件,则输出命令:!ls /),按下Enter键后又回到vim编辑环境。

 

忽略大小搜索(三种方法)

        1. 设置方法   :set ic      取消方法 :set noic
        2. 设置方法   :set ignorecase    取消方法  :set  noignorecase
        3. / 要搜索的内容 \c

      

 

:2,4move9      --- 将第几行到第几行的内容移动到指定行的后面

        :2,4copy9      --- 将第几行到第几行的内容复制到指定行的后面

 

  :r  可以将另外一个文件的内容读取到你正在编辑的文件上。        

:r !command --- 就是把 command 命令的结果读取到当前编辑的文

件上面来

 

tips:如果在读取文件的时候使用了重定向到正在编辑的文件

此时按“O”临时保留现有文件(此时文件已经被改变),

按“L”重新加载文件的最新内容。(可以查看:help W12 或 w11)

 

1.3.1、替换文本内容

         %s#oldboy#oldgirl#g   --- 将文件中指定信息全部做替换

         参数解释:

% 全部做替换

           s substitute  替换

           g global      将整行符合要求的字符都做替换

            #要替换的信息#修改成什么信息#

 

        

   例如:替换修改文件部分内容

       :2,4s#oldgirl#oldboy#g    --- 将第二行到第四行内容进行替换

       :12,$s#oldgirl#oldboy#g   --- 将第十二行到结尾内容进行替换

     

       

 

 

 

 

 

1.3.2、查找符合要求的字符串并执行相应操作(以行为单位)

一般格式::[range]g/pattern/cmd

对range内所有符合pattern的行执行cmd

常见的一些用法:

1, 删除包含某个Pattern的行

:g/pattern/d, 实际上作者更推荐这种用法: :g/pattern/d_

2,删除不包含某个Pattern的行

:g!/pattern/d 或者 :v/pattern/d,v表示inverse

3,删除所有空行

:g/^\s*$/d,其中 \s* 表示0个或者多个空格;似乎用 :g/^$/d 也行

 

例子:

 

 

 

1.4、其他

1.4.1、多窗口同时编辑(退出要退多次)

垂直2个分屏

# vim -O2 /tmp/f1 /tmp/f2   

水平2个分屏

# vim -o2 /tmp/f1 /tmp/f2

 

切换光标到指定窗口:Ctrl+w,按方向键,切换后,光标所在窗口

的状态栏会加粗显示

 

退出文件编辑:先退出光标所在窗口的文件,再退出另外一个

 

实际应用举例:使用分屏在文件间复制粘贴

2yy → (ctrl+w)+(垂直:←→/水平:↑↓)+p

 

1.4.2、vim缓存文件(锁文件)

编辑文件突然非正常状态退出

vim编辑文件原理

    01. 开始利用vim编辑一个文件

    02. 需要判断编辑的文件所在目录中是否有隐藏文件

        a 拥有: 会有报错提示信息

        b 没有: 进入到命令模式

    03. 在命令模式就会产生临时文件

    04. 进入编辑模式对文件进行编辑

    05. 编辑完成之后需要确定是否正常保存退出

        a 是正常退出: 从编辑状态--esc--命令模式--:wq保存退出 (将临时文件重命名)

        b 非正常退出: 临时文件会永久保留

 

解决问题方法:

    第一个步骤: 进行查看文件内容

       按大写字母O

    第二个步骤: 确认文件是否需要恢复

       需要恢复: 重新编辑按R,恢复文件内容

       不用恢复: 重新编辑按E,进行重新编辑

    第三个步骤: 将临时文件进行删除

       1. 按大写字母D删除文件

       2. 利用rm命令删除临时文件

            #rm -f /oldboy/.oldboy.txt.swp

   

Tips.存在缓存文件时,分两种情况处理:

Case 1:如果是一个正在编辑的文件被两个或多个程序打开,这个

要注意文件的保存可能会产生意外的结果(通常建议退出只保留一

个程序独占该文件,这时候缓存文件会删除)

Case 2:如果是正在编辑的文件意外退出,可以使用 :recover 或者

vim -r 文件名去恢复更改(将缓存文件应用到现有编辑的文件),

操作之后用 rm -f 删除缓存文件来避免再次提示此信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.4.3、vi/vim 键盘图

 

 

> 翻转到上一页:ctrl + b

 

> 翻转到下一页:ctrl + f

 

 

1.4.4、批量修改文件内容

01. 批量进行注释 --- 批量添加信息

        第一个步骤:进入批量编辑状态(视图模式)

          ctrl+v    --- 进入视图模式

          -- VISUAL BLOCK --     

        第二个步骤:批量选中要编辑的行

         方向键选择

        第三个步骤:进行编辑修改

         shift+i--进行单行编辑

        第四个步骤:实现批量修改

         按esc

        

02. 批量删除信息(删除列)

       第一个步骤:进入批量编辑状态(视图模式)

            ctrl+v    --- 进入视图模式

           -- VISUAL BLOCK --

       第二个步骤:批量选中要删除的列

          方向键选择 

       第三个步骤:删除信息

           按键盘字母d 或者 按键盘字母x      

 

03. 批量删除信息(删除行)

       第一个步骤:进入批量编辑状态(视图模式)

           Shift + V 进入基于行的可视模式

      

       第二个步骤:选择要批量删除的行

           方向键选择

   

       第三个步骤:删除信息

           按键盘字母d 或者 按键盘字母x

 

 

 

1.4.5、不要用vim打开大文件

不要使用vim打开大文件,vim会一次性读取所有内容到内存,容易造成宿主机内存溢出。

打开文件前,可以使用du -h命令查看文件大小。一般,100MB以下为宜。

 

 

1.4.6、定制vim的工作特性:

   

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

       永久有效:

           全局:/etc/vimrc

           用户个人:~/.vimrc

          

       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

          

       获取帮助:

           :help

           :help subject

 

本文标签: 工具 Linux vi vim