Linux文件管理(3)——文本编辑vi/vim ╰半橙微兮° 2022-06-16 11:14 176阅读 0赞 ![这里写图片描述][SouthEast] ## vi/vim三种模式 ## ![这里写图片描述][SouthEast 1] 基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是: **(1)一般模式(末行模式Last Line mode)** 以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。 **(2)编辑模式(插入模式Insert mode)** 在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。 **(3)指令列命令模式(Command mode)** 在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的! ## vi/vim基本操作 ## **1、移动光标** 行号G 光标移到某行(如1G表示光标移到第一行) G 光标移到文件结尾 H 移到屏幕的左上角 M 移到屏幕的中间行开头 L 移到屏幕的最后一行 [ 移到文件开始位置 (双击) ] 移到文件结束位置(双击) :n 移到文件的第n行 Ctrl + b 屏幕上卷一个菜单 Ctrl + F 屏幕下卷一个菜单 h 将光标左移一格 l 将光标右移一格 j 将光标下移一格 k 将光标上移一格 w 将光标移到下一个小字的前面 b 将光标移到前一个小字的前面 0 把光标移到当前行的第一个字符处 $ 把光标移到当前行的最后一个字符处 **2、编辑切换** a 将在光标所在位置之后插入文本(append) A 将在光标所在行末插入文本 i 将在光标所在位置之前插入文本(insert) I 将在光标所在行的第一个非空字符前插入文本 o 将在光标所在行的下一行开始插入文本(open) O 将在光标所在行的上一行开始插入文本 **3、修改内容** #删除操作 x 删除光标所在字符 nx 删除由光标位置起始的n个字符(含光标位置) dw 删除光标所在的单词 ndw 删除光标位置起始的n个字符组 dd 删除光标所在行 d0 将行的开始到光标位置的字符全部删除 d$ 或D 将光标位置起始到行尾的字符全部删除 ndd 将光标位置起始的n行(整行)删除 :start,endd 删除文件的第start到end行 #修改 rc 把光符所在字符替换成c R 覆盖本行内容 u 恢复上一次的修改 cw 改变光标所在单词 C 改变一行光标位置以后的部分 cc或S 修改一整行 #复制粘贴 yy 把当前行放入缓冲区 yw 把光标所在的单词放入缓冲区 p 将缓冲区内容取到光标所在行的下面一行 P 将缓冲区内容取到光标所在行的上面一行 :first,last co dest 将first到last行的数据复制到目标行(dest)下面 :start,end m dest 将start到end行的数据移动到目标行(dest)下 :r filename 将指定文件的内容读入光标所在行下 **4、寻找替换** /pattern 向后寻找指定的pattern ,若遇到文件尾,则从头再开始。 ?pattern 向前寻找指定的pattern ,若遇到文件头,则从尾再开始。 n 在上次指定的方向上,再次执行 N 在上次指定的方向的相反方向上,再次执行上次定义的查找 :%s/old/new/g 查找所有old并替换为new :start,ends/old/new 替换指定区域 **5、保存** 退出vi编辑器 :在命令方式下运行。不管在什么状态,最好在运行下面命令前,先按以下ESC键,以防出错。 :wq 存盘退出 :q 不存盘退出 :q! 不存盘强制退出 :w 只存盘不退出 **6、其它** vi 进入vi而不读入任何文件 vi filename 进入vi并读入指定名称的文件(新、旧文件均可)。 vi +n filename 进入vi并且由文件的第几行开始。 vi + filename 进入vi并且由文件的最后一行开始 vi filename(s) 进入vi并且将各指定文件列入名单内,第一个文件先读入 u 取消前一指令 Ctrl + l 刷新屏幕显示 :set nu 显示文件的行号,但不会存文件 :set nonu 解除行号显示 e! 重新装入当前文件,若当前文件有改动,则丢弃以前的改动 :sh 启动sh ,从sh中返回可用exit或ctrl+d :! Command 执行命令command !! 重新执行上次的:! Command子命令 #删除多余的回车符 ※vi中执行:g/^Ms///g,其中^M为ctrl+v和ctrl+m组和输入 ※执行dos2unix filename ※执行sed 's/^M//' test.sh > back.sh [SouthEast]: /images/20220616/379e9de57db24718b8a0321cbbbf1953.png [SouthEast 1]: /images/20220616/59722528910f482fb11f0f007d5e4a4e.png
还没有评论,来说两句吧...