1. vi 和 vim 命令是linux中强大的文本编辑器, 由于Linux系统一切皆文件,而配置一个服务就是在修改其 配置文件的参数。 vim 编辑器是运维工程师必须掌握的一个工具, 没有它很多工作都无法完成。 vim 其实是 vi 的升级版 2. vim三种工作模式 Vim编辑器中设置了三种模式: 命令模式、编辑模式、末行模式,每种模式分别又支持多种不同的命令快捷键,大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法。
命令模式:vim /etc/passwd # 进行快捷键操作 ## 光标的跳转 Shift + g | G // 将光标跳转到文件最后一行 gg // 将光标跳转到文件的第一行 Ngg // 将光标跳转到指定的行(N为阿拉伯数字) Shift + 4 | $ // 将光标跳转到当前所在行的行末 Shift + 6 | ^ | 0 // 将光标跳转到当前所在行的行首 ## 复制粘贴 yy // 复制光标所在行的整行内容 p(小写p) // 将复制的内容粘贴到光标所在行的下一行 P(大写P) // 将复制的内容粘贴到光标所在行的上一行 Nyy|yNy // 将光标所在行整行内容及下面N-1行内容复制 (N为阿拉伯数字) ## 剪切删除 dd // 将光标所在行一整行内容,剪切(删除) Ndd | dNd // 将光标所在行及下面N-1行内容剪切(N为阿拉伯数字) Shift + d | D // 将光标所在字符及后面整行内容剪切(删除) x // 删除当前光标所在字符 Shift + x | X // 将光标所在当前字符的前一个字符删除 d + Shift + g | dG // 将光标所在行及后面所有行内容删除 ## 撤销回滚替换 u // 撤销上一次操作 Ctrl + r // 恢复上一次撤销的操作 r // 替换光标当前所在的一个字符 Shift + r | R // 从光标所在字符开始进行替换直到按ESC结束 ## 翻页 Ctrl + b // 向前翻页 Ctrl + f // 向后翻页 4.编辑模式 -- INSERT -- 像正常的Windows文本编辑器一样,可以随意写入内容 ## 从命令模式如何进入编辑模式 i // 在光标所在位置进入编辑模式(输入内容在光标之前) I // 将光标跳转到光标所在行的行首并进入编辑模式(输入内容在光标之前) a // 将光标跳转到光标所在字符的后一个字符并进入编辑模式(输入内容在光标之前) A // 将光标跳转到光标所在行的行末并进入编辑模式(输入内容在光标之前) s // 将光标所在字符删除并进入编辑模式(输入内容在光标之前) S // 将光标所在行的整行内容删除并进入编辑模式 o // 将光标移动到当前所在行的下一行并进入编辑模式 O // 将光标移动到光标所在行的上一行并进入编辑模式 末行模式(底行模式) # 在编辑器的左下角进行操作 显示行号、搜索、替换、保存、退出 ... # 进入末行模式的方法 1)在命令模式下,输入冒号 2)在命令模式下,输入/ (搜索想要的内容)
:w // 只保存但是不退出 :q // 退出但不保存 (没有改内容) :wq // 保存退出 快捷键 Shift + zz | ZZ :x // 保存退出 和:wq相等 :q! // 强制退出 :w! // 强制保存 :wq! // 强制保存并退出
E37: No write since last change (add ! to override) // 文件写入内容,没有保存,无法直接退出,除非强制退出 E45: 'readonly' option is set (add ! to override) // 只读文件,无法保存退出,只有root用户可以强制保存退出 E212: Unable to open and write files // 文件无法写入,没有写入权限 E212: Can't open file for writing // 文件无法写入,文件写入到一个不存在的目录中
替换 :%s #要被替换的内容#替换的内容#g %: 所有行 s: search 搜索 g: 全局替换
光标跳转及命令 ## 显示行号 :set number 简写 :set nu ## 取消显示行号 :set nonumber 简写 :set nonu ## 光标跳转到指定行 :N (N为阿拉伯数字) ## 忽略大小写 :set ic ## 取消忽略大小写 :set noic## 自动缩进 :set ai ## 取消自动缩进 :set noai ## 显示制表符,结束符... :set list ## 取消 :set nolist
当我们在使用vim编辑文件时 1)首先会在源文件目录下生成一个.swp的临时文件 2)如果vim非正常退出的情况下,该临时文件一直存在 3)下一次编辑则会提示 E325: ATTENTION Found a swap file by the name "/etc/sysconfig/network-scripts/.ifcfg-ens33.swp" owned by: root dated: Tue Apr 9 17:08:59 2024 file name: /etc/sysconfig/network-scripts/ifcfg-ens33 modified: no user name: root host name: localhost.localdomain process ID: 7334 (still running) While opening file "/etc/sysconfig/network-scripts/ifcfg-ens33" dated: Tue Mar 26 17:08:45 2024 (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 /etc/sysconfig/network scripts/ifcfg-ens33" to recover the changes (see ":help recovery"). If you did this already, delete the swap file "/etc/sysconfig/network scripts/.ifcfg-ens33.swp" to avoid this message. Swap file "/etc/sysconfig/network-scripts/.ifcfg-ens33.swp" already exists! [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort: 只读模式打开 继续编辑 覆盖 退出
解决方案: 1)查看modified状态 如果是yes,则需要覆盖源文件 - vim -r /etc/sysconfig/network-scripts/ifcfg-ens33 - vim /etc/sysconfig/network-scripts/ifcfg-ens3 (R)ecover 按 r 2)删除.swp临时文件即可 rm -f /etc/sysconfig/network-scripts/.ifcfg-ens33.swp 1)查看modified状态 如果是no,则需要覆盖源文件 (Q)uit 按q退出 2)直接删除.swp临时文件 rm -f /etc/sysconfig/network-scripts/.ifcfg-ens33.swp
视图模式(命令模式) vim进入编辑
块视图模式 -- VISUAL BLOCK -- Ctrl + v # 批量注释 1)Ctrl + v 进入块视图模式 2)按键盘的上下左右,选中想要的内容 3)如果是在行前加入内容,Shift + i 4)如果是在行后加入内容,Shift + a 5)输入想要的内容后,返回命令模式(ESC) 行视图模式 -- VISUAL LINE -- Shit + v ## 编辑文件直接跳转到指定行 [root@localhost ~]# vim +N 1.txt // N为阿拉伯数字 [root@localhost ~]# vim +3 1.txt ## 对比文件不同之处 [root@localhost ~]# vimdiff 1.txt 2.txt [root@localhost ~]# diff 1.txt 3.txt (另一种对比方式) 3,6c3,6 < http://pxost.baidu.com/index.html < http://mp3.baiadu.com/index.html < http://www.baidu.com/3.html < http://post.baidxu.com/2.html --- > http:aaaaa//pxost.baidu.com/index.html > http://mp3xxx.baiadu.com/index.html > http://www.baxxidu.com/3.html > http://post.baixxdxu.com/2.html ## 同时编辑多个文件 (使用Ctrl + ww 进行切换) [root@localhost ~]# vim -o 1.txt 2.txt // 水平拆分 [root@localhost ~]# vim -O 1.txt 2.txt // 垂直拆分
标签:文本编辑,##,所在,跳转,模式,vim,Linux,光标 From: https://www.cnblogs.com/style0427/p/18134213