第9章 vim程序编辑器

本文详细介绍了vi/vim编辑器的使用,包括其基本操作(如模式切换、移动光标、查找替换、删除复制)、缓存机制以及处理意外中断时的恢复策略。还提及了避免与其他程序冲突和处理文件冲突的方法。
摘要由CSDN通过智能技术生成

9.1 vi与vim

vim是vi的升级版,使用vi/vim的原因

  • 所有UNIX-like系统都会内置vi

  • 很多软件的编辑接口都会主动调用vi(比如crotab)

  • vim具有程序编辑能力,主动地以字体颜色辨别语法的正确性

  • 程序简单,编辑速度很快

9.2 vi的使用

vi分成3种模式:

  • 一般命令模式(command mode)

            vi打开文件后直接进入,或者其他模式下按【Esc】

  • 编辑模式(insert mode)

            一般命令模式下输入【i o a等】即可进入

  • 命令行模式(command-line mode)

            一般命令模式下输入【: / ?】即可进入

9.2.2 按键说明

image.png

1、一般命令模式(command mode)

1)移动光标的方法

移动光标的方法
hjkl左下上右移动一个字符

Ctrl+f

[Page Down]
Ctrl+b[Page Up]
数字0[Home],本行的第一个字符
$[End],本行的最后一个字符
G文件的最后一行
gg文件的第一行
n<Enter>光标向下移动n行

2)查找与替换

查找与替换
/word向光标之下寻找一个名称叫word的字符串
?word向上找
n重复前一个查找操作
N【反向】进行前一个查找操作
:n1,n2s/word1/word2/g替换word1为word2,行数是n1~n2
:1,$s/word1/word2/g替换word1为word2,全文
:1,$s/word1/word2/gc替换前询问用户(confirm)

3)删除、复制和粘贴

删除、复制和粘贴
x和Xx是向后删除一个字符,X是向前删除一个字符
dd删除当前行
ndd删除光标所在的向下n行
yy复制当行,在前面加数字,就是复制n行
p与Pp是把复制的数据粘贴到光标下一行,P是上一行
u恢复前一个操作
Ctrl+r重做被恢复的前一个操作,不能重复操作
.小数点,重复操作
2、编辑模式(insert mode)
进入插入或替换的编辑模式
i和Ii为【从目前光标所在处插入】,I为【从当前行的第一个字符处插入】
a和Aa为【从当前光标的下一个字符处插入】,A为【从当前行的最后一个字符处插入】
o和Oo为【光标的下一行开始插入】,O为【光标的上一行开始插入】
r和Rr为【替换光标所在的一个字符】,R为【替换光标所在的连续字符】
3、命令行模式(command-line mode)

w保存,q退出,wq保存后退出,加上!就是强制的意思,read only用户必须加!,其中否能强制写入取决用户的文件权限

9.2.4 vim的缓存和恢复

在用vi编辑文件时会产生一个缓存文件(.文件名.swp),如果编辑文件时被异常终端,导致缓存无法正常结束,那么它就不会消失,如下:

-rwx------.  1 root root       1978 Jul 28 16:16 passwd.backo
-rw-------.  1 tecs tecs      12288 Jul 28 16:07 .passwd.backo.swp

此时你再编辑改文件,会弹出来提醒事项,如下,想要不弹出,记得删除缓存文件

E325: ATTENTION
Found a swap file by the name ".passwd.backo.swp"          <==有缓存文件
          owned by: tecs   dated: Thu Jul 28 16:07:17 2022
         file name: /tmp/passwd.backo                      <==缓存文件属于哪个实际的文件
          modified: YES
         user name: tecs   host name: host-192-168-177-76
        process ID: 1187669
While opening file "passwd.backo"
             dated: Thu Jul 28 16:16:58 2022
      NEWER than swap file!

# 发生错误的2个原因和解决方法
(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r passwd.backo"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".passwd.backo.swp"
    to avoid this message.
"passwd.backo" 40L, 1978C
Press ENTER or type command to continue

此时输入【R】就可以从缓存文件将上次的修改加载过来,如果认为缓存文件无效可以输入【D】来删除它

如果发现是有其他人也在vi修改此文件,可以使用【O】来只读该文件

9.3 vim的额外功能

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值