还剩46页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
文本编辑器教学VI课程目标与收获掌握VI基础操作学习VI编辑器的基本命令和操作方式,包括文本编辑、保存、退出等基础功能,为进一步学习打下坚实基础精通常用快捷键熟练掌握VI中常用的快捷键组合,提高文本编辑效率,减少重复操作,让您的工作事半功倍高效文本处理能力学会使用VI进行高效的文本编辑和处理,包括查找替换、批量修改、正则表达式应用等高级功能自动化脚本处理编辑器发展历史VIVI编辑器的历史可以追溯到1976年,它是由比尔·乔伊(Bill Joy)在加州大学伯克利分校开发的,最初是作为ex编辑器的可视化界面扩展VI这个名称来源于Visual Interface(可视界面)的缩写,意味着它是ex编辑器的视觉模式随着时间的推移,VI逐渐成为Unix系统中最受欢迎的文本编辑器之一它的设计理念是高效和精简,使用户能够以最少的按键完成复杂的编辑任务这种设计思想使得VI即使在今天仍然保持着强大的生命力在1990年代,布拉姆·莫伦纳尔(Bram Moolenaar)开发了VI的增强版本Vim(VI Improved),进一步扩展了VI的功能,但保留了其核心操作方式,使VI的精神得以延续和发扬比尔·乔伊(Bill Joy),VI编辑器的创始人,他在伯克利大学的时候开发了这款影响深远的文本编辑工具的核心优势VI小巧快速跨平台兼容VI编辑器非常轻量级,启动速度快,几乎可以在任何Unix/Linux系VI编辑器可以在几乎所有类Unix系统上运行,包括Linux、统上运行,即使是在资源受限的环境中也能高效工作其二进制macOS、BSD等,甚至在Windows系统上也有相应的实现版本,文件通常只有几百KB,加载速度几乎是瞬间的为用户提供了一致的使用体验编辑即命令合一资源消耗极低VI的设计理念是将编辑和命令结合在一起,用户无需频繁切换鼠即使在处理大型文件时,VI也能保持较低的内存和CPU占用,这标和键盘,所有操作都可以通过键盘完成,大大提高了文本编辑使得它在服务器环境或资源受限的设备上特别有价值,能够高效的效率地处理各种文本编辑任务与比较VI VIM原版VI VIMVI Improved•功能相对简洁,专注于基本的文本编辑功能•功能更加强大和丰富,是VI的增强版本•几乎所有Unix系统都预装,无需额外安装•支持多种语法高亮,方便编程和代码阅读•占用资源极少,适合在资源受限的环境中使用•提供丰富的插件系统,可以扩展各种功能•不支持语法高亮和代码折叠等高级功能•支持多级撤销和重做,编辑更加灵活•配置选项相对有限,自定义程度较低•提供分屏编辑、标签页等高级界面功能•不支持多级撤销,只能撤销最近的一次修改•配置选项更多,可高度自定义编辑环境•内置脚本语言,支持更复杂的自动化任务尽管VIM提供了更多的功能和改进,但原版VI的简洁和普遍存在性仍然使其成为学习和掌握的重要基础掌握了VI的基本操作后,过渡到VIM将会非常自然基本工作模式VI编辑模式(Insert Mode)在此模式下,用户可以直接输入文本通过按下i、a、o等键从普通模式进入编辑模式,按普通模式(Normal Mode)下ESC键可以返回到普通模式所有的文本输入都在这个模式下完成这是VI启动后的默认模式,在此模式下,键盘输入被解释为命令而非文本用户可以移动光标、删除文本、复制粘贴、搜索替换等所有的编辑操作都在这个模式下进行控命令模式(Command Mode)制通过在普通模式下输入冒号(:)进入命令模式,可以执行保存文件、退出编辑器、设置选项等操作命令执行后自动返回普通模式理解这三种基本模式是掌握VI编辑器的关键在使用过程中,用户需要频繁地在这些模式之间切换,以完成不同的编辑任务这种模式切换的设计使得VI可以用有限的键盘按键实现丰富的功能模式切换实操演示进入编辑模式的方法返回普通模式•按下i键-在当前光标位置前插入文本无论在哪种模式下,按下ESC键都可以返回到普通模式有些用户会将Caps Lock键重映射为ESC键,以方便频繁的模式切换•按下a键-在当前光标位置后追加文本•按下o键-在当前行下方新开一行并进入编辑模式进入命令模式•按下O键-在当前行上方新开一行并进入编辑模式在普通模式下,按下冒号(:)键进入命令模式,此时光标会移动到屏幕底部,显示一个冒号提示•按下I键-在当前行行首插入文本符,等待用户输入命令输入命令后按回车键执行•按下A键-在当前行行尾追加文本熟练掌握模式切换是高效使用VI的基础初学者经常会忘记自己处于哪种模式,导致操作错误一个好习惯是不确定时多按几次ESC键,确保回到普通模式后再进行操作启动与退出VI启动VI保存文件退出VI在终端中输入vi filename命令可以启动VI并打开指定文在普通模式下输入:w命令可以保存当前文件如果要指在普通模式下输入:q命令可以退出VI如果文件有未保存件如果文件不存在,VI会创建一个新文件也可以直接定文件名保存,可以使用:w filename命令保存成功的修改,VI会拒绝退出并显示警告可以使用:q!命令强输入vi命令启动编辑器,然后再通过命令打开文件后,编辑器底部会显示文件信息和已写入的消息制退出,或者使用:wq命令保存并退出除了上述基本命令外,还有一些常用的组合命令•:wq或ZZ-保存当前文件并退出VI•:x-类似于:wq,但只在文件被修改时才写入•:q!-强制退出VI,丢弃所有未保存的修改•:w filename-将当前内容保存为指定文件名,相当于另存为•:e filename-打开新文件进行编辑(需先保存当前文件)光标移动基本操作基本方向键VI设计之初是为不含方向键的键盘设计的,因此使用字母键作为方向控制•h-向左移动光标一个字符•j-向下移动光标一行•k-向上移动光标一行•l-向右移动光标一个字符这四个键位于键盘的同一行,便于操作现代键盘的方向键也同样可用批量移动技巧在命令前加上数字可以重复执行该命令•5j-向下移动5行熟练掌握光标移动命令是高效使用VI的关键刚开始可能会感觉不习惯,但经•10h-向左移动10个字符过一段时间的练习,这些命令会成为肌肉记忆,让你的编辑效率大大提高•3k-向上移动3行•20l-向右移动20个字符除了基本的光标移动命令外,VI还提供了许多高级的移动方式,如单词级别、段落级别的跳转,这些将在后续课程中详细介绍掌握这些命令后,你将能够在大型文件中快速定位和导航行内跳转命令跳到行首在普通模式下,按下数字0键可以立即将光标移动到当前行的第一个字符处这对于需要从行首开始编辑的场景非常有用另外,使用^键可以跳转到当前行的第一个非空白字符处,这在编辑缩进的代码时特别有用跳到行尾按下$键可以将光标移动到当前行的最后一个字符处这对于在行尾追加内容或者查看长行的末尾部分非常方便文件首尾跳转使用gg命令可以跳转到文件的第一行,而G命令则可以跳转到文件的最后一行这对于快速浏览大型文件非常有用也可以在G前加上行号来跳转到指定行,例如10G会跳转到第10行熟练掌握这些跳转命令可以大大提高在VI中的导航效率对于程序员来说,能够快速在文件中定位和跳转是提高编码效率的关键因素之一结合数字前缀,这些命令可以让你在大型文件中如鱼得水编辑文本插入与追加——插入模式命令i-在当前光标位置前插入文本I-在当前行的行首插入文本(非空白字符处)a-在当前光标位置后追加文本A-在当前行的行尾追加文本o-在当前行下方新开一行并进入插入模式O-在当前行上方新开一行并进入插入模式这些命令都会将编辑器从普通模式切换到插入模式,允许直接输入文本完成文本输入后,按ESC键返回普通模式选择合适的插入命令可以减少不必要的光标移动,提高编辑效率例如,如果需要在行尾添加内容,直接使用A命令比先移动到行尾再按i要高效得多同样,当需要添加新行时,使用o或O命令比先定位到行尾、插入换行符、然后移动到新行要简单得多这些小技巧在长时间使用VI时会大大提高工作效率文本删除操作基本删除命令行级删除x-删除当前光标所在的字符dd-删除整行X-删除当前光标前的字符(相当于退格键)5dd-删除从当前行开始的5行这些命令可以与数字组合使用,例如5x会删除从光标开始的5个字符D-删除从光标位置到行尾的内容单词级删除高级删除dw-删除从光标位置到下一个单词开始处的内容d$-删除从光标位置到行尾的内容(等同于D)db-删除从光标位置到前一个单词开始处的内容d0-删除从行首到光标位置的内容daw-删除整个当前单词(包括周围的空格)d^-删除从第一个非空白字符到光标位置的内容VI的删除命令设计遵循一定的模式通常是d加上一个动作命令,表示删除到指定位置例如,dt.表示删除从当前位置到下一个句点的所有内容理解这种模式有助于记忆和应用这些命令删除与撤销还原撤销操作重复上次操作u-撤销最近的一次修改.-重复上一次的修改操作U-撤销对当前行的所有修改(仅在该行未离开过光标时有效)点命令(.)是VI中一个非常强大的功能,它可以重复上一次的修改操作例如,如果你使用dw删除了一个单词,然后按下.,在原始的VI中,只能撤销最近的一次修改而在VIM中,可以多次按u进行多级撤销,回退到之前的任何状态VI将再次执行dw命令,删除下一个单词重做操作这个功能在需要进行重复编辑时特别有用,如删除多个连续的单词、在多行的同一位置插入相同的文本等熟练使用点命令可以大大减少重复操作,提高编辑效率Ctrl+r-重做最近被撤销的操作如果你撤销了一些操作,但后来又决定需要那些更改,可以使用Ctrl+r来重做这些操作在VIM中,重做可以多次执行,与撤销操作相对应拷贝与粘贴(复制粘贴)复制文本yy或Y-复制当前整行2yy或2Y-复制当前行和下一行yw-复制从光标到单词结尾的内容y$-复制从光标到行尾的内容复制命令以y(yank)开头,表示将文本提取到寄存器中粘贴文本p-在光标后粘贴P-在光标前粘贴如果复制的是整行内容,p会将内容粘贴到当前行的下方,P会将内容粘贴到当前行的上方如果复制的是行内内容,p会将内容粘贴到光标后,P会将内容粘贴到光标前使用寄存器VI有多个寄存器可以用来存储文本,默认使用无名寄存器ayy-将当前行复制到寄存器aap-粘贴寄存器a中的内容使用寄存器可以在复制多个不同内容时避免覆盖VI的复制粘贴系统非常强大,特别是结合寄存器使用时熟练掌握这些命令可以让你在编辑时更加灵活地处理文本内容,尤其是在需要移动或复制大量文本时非常有用查找与替换基础操作基本查找基本替换/关键字-从当前位置向下查找指定关键字:s/old/new/-替换当前行第一个匹配的old为new关键字-从当前位置向上查找指定关键字:s/old/new/g-替换当前行所有的old为newn-继续查找下一个匹配项(与搜索方向相同):%s/old/new/g-替换整个文件中所有的old为newN-继续查找上一个匹配项(与搜索方向相反):5,10s/old/new/g-替换第5行到第10行中所有的old为new查找是区分大小写的如果要进行不区分大小写的查找,可以使用:set ignorecase替换命令中可以使用正则表达式来进行更复杂的匹配和替换例如,:%s/^#.*//g命令可以删除所有以#开头的注释行单行内查找f字符-在当前行向右查找字符并移动到该字符F字符-在当前行向左查找字符并移动到该字符t字符-在当前行向右查找字符并移动到该字符前T字符-在当前行向左查找字符并移动到该字符后多文件处理打开新文件在多文件间切换文件操作命令:e filename-在当前VI会话中打开新文件:n-切换到下一个文件(当使用vi file1:w-保存当前文件file2file3命令同时打开多个文件时)如果当前文件有未保存的更改,VI会拒绝:w filename-将当前文件另存为新文件切换并显示警告可以使用:e!filename:prev-切换到上一个文件:r filename-将指定文件的内容插入到当强制切换,但会丢失当前文件的更改:args-显示当前打开的所有文件列表,前位置更安全的做法是先保存当前文件当前文件用[]标记:!command-执行外部shell命令,例如(:w),然后再打开新文件:!ls列出目录内容在VIM中,多文件处理能力得到了极大的增强,支持分屏编辑、标签页等更高级的功能但即使是原始的VI,也提供了基本的多文件处理能力,足以应对日常的编辑需求熟练掌握这些命令可以让你在处理多个相关文件时更加高效查找高阶用法高级查找技巧向上查找与导航/word\c-不区分大小写查找word关键字-从当前位置向上查找指定关键字/\-精确查找单词word(不匹配sword或wordsmith)n-继续查找下一个匹配项(与初始搜索方向相同)/^word-查找行首的word N-继续查找上一个匹配项(与初始搜索方向相反)/word$-查找行尾的word使用/和可以轻松在文件中前后导航例如,先用/error查找错误,然后使用n快速跳到下一个错误位置VI的查找功能支持正则表达式,可以构建复杂的搜索模式/[0-9]\+-查找一个或多个数字/\error\|warning\-查找error或warning熟练掌握查找功能对于在大型文件中定位特定内容非常重要结合正则表达式,VI的查找功能变得异常强大,可以满足几乎所有的文本查找需求这对于程序员处理源代码、系统管理员分析日志文件等场景特别有用定位到错误行与代码行行号跳转显示行号:n-跳转到第n行,例如:30跳转到第30行:set nu或:set number-显示行号nG-跳转到第n行,例如30G跳转到第30行:set nonu或:set nonumber-隐藏行号这两种方式效果相同,可以根据个人习惯选择使用显示行号可以帮助更好地定位和导航文件,特别是在处理编译错误或调试时相对行号标记与跳转:set rnu或:set relativenumber-显示相对行号ma-在当前位置设置标记a相对行号显示当前行与其他行的距离,这在使用相对移动命令(如5j)时非常有a-跳转到标记a所在的行用`a-跳转到标记a的确切位置(行和列)标记可以是任何小写字母,可以设置多个标记点快速在文件中导航在处理程序源代码时,经常需要快速定位到特定行,尤其是编译器报告错误时VI提供了多种方式来实现这一点,无论是通过行号直接跳转,还是通过设置标记来记住重要位置这些功能使得在大型代码文件中的导航变得更加便捷缩进与格式调整基本缩进命令自动调整代码缩进-将当前行向右缩进一个单位=-自动调整所选代码的缩进-将当前行向左缩进一个单位=%-自动调整当前代码块的缩进(在括号内使用)5-将当前行及以下4行向右缩进gg=G-自动调整整个文件的缩进(先跳到文件开头,再调整到文件末尾)5-将当前行及以下4行向左缩进这些命令在整理格式混乱的代码时非常有用,可以快速让代码看起来更加整齐缩进的单位大小由VI的shiftwidth选项控制,可以通过:set shiftwidth=4设置为4个空格自动缩进设置:set autoindent-开启自动缩进,新行会保持与上一行相同的缩进:set smartindent-开启智能缩进,根据代码结构自动调整缩进:set cindent-开启C风格缩进,专为C/C++代码优化良好的代码缩进不仅提高了代码的可读性,也有助于避免语法错误和逻辑问题VI提供了丰富的缩进工具,可以帮助程序员维护整洁、一致的代码风格无论是手动缩进还是自动格式化,VI都能满足各种编码风格的需求书签与跳转设置本地书签ma-在当前位置设置标记a(可以使用a-z的任何小写字母)本地书签只在当前文件内有效,适合在单个文件内导航可以设置多个书签来标记代码中的重要位置,如函数定义、重要逻辑节点等设置全局书签mA-在当前位置设置全局标记A(可以使用A-Z的任何大写字母)全局书签在多个文件间有效,即使切换到其他文件,也可以通过全局书签直接跳回这对于在多个相关文件间快速切换特别有用跳转到书签a-跳转到标记a所在的行首`a-跳转到标记a的确切位置(行和列都精确匹配)使用撇号()跳转到行首更适合处理代码,而使用反引号(`)则适合精确定位特定字符特殊标记`.-跳转到最后修改的位置`-跳转到上次退出文件时的位置`0-跳转到上次编辑的文件位置这些特殊标记由VI自动维护,不需要手动设置,非常适合恢复上次的工作状态书签功能是VI中非常强大但经常被忽视的功能合理使用书签可以在复杂文件或多文件项目中大大提高导航效率特别是对于大型源代码文件,设置书签可以让你快速在不同函数、类或逻辑块之间跳转,无需记住行号或反复搜索编辑高级技巧宏录制宏录制基础宏应用示例qx-开始录制宏,存储到寄存器x(可以是a-z的任何字母)
1.为多行代码添加注释录制一个在行首添加注释符号的宏,然后对多行执行•执行一系列操作(这些操作将被记录)
2.格式化表格数据录制处理一行表格数据的宏,应用到所有数据行q-停止录制宏
3.重构变量名录制一个查找并替换特定变量名的宏
4.标准化代码格式录制一个应用缩进和代码风格的宏宏录制可以捕获任何普通模式下的操作,包括移动、编辑、搜索等,甚至可以包含进入插入模式、输入文本和返回普通模式的过程宏执行@x-执行存储在寄存器x中的宏@@-重复执行最近使用的宏5@x-执行宏x五次正则表达式应用基本正则语法常用正则应用分组与引用VI支持强大的正则表达式搜索和替换功能,常用的正则表达式使用正则表达式可以实现复杂的文本处理操作正则表达式中可以使用括号创建捕获组,并在替换中引用元字符包括:g/^#/d-删除所有以#开头的注释行:%s/\class\\.*\/\2\1/g-交换class和后面的类名^-匹配行首:%s/[0-9]\+//g-删除文件中所有数字:%s/\[0-9]\+\-\[0-9]\+\/\2-\1/g-交换连字符两侧的数字$-匹配行尾:%s/\s\+$//g-删除所有行尾的空白字符.-匹配任意单个字符:g/^$/d-删除所有空行捕获组按照左括号出现的顺序编号,\1引用第一个组,\2引用*-匹配前一个字符的零次或多次重复:%s/\/new/g-将单词old精确替换为new(不会影响folder第二个组,以此类推\+-匹配前一个字符的一次或多次重复等单词)[abc]-匹配方括号内的任意一个字符[^abc]-匹配除了方括号内字符以外的任意字符正则表达式是VI中处理复杂文本模式的强大工具掌握正则表达式可以让你在处理大量结构化文本时事半功倍,特别是在代码重构、数据清洗和格式转换等任务中虽然正则表达式的语法看起来复杂,但它的强大功能值得投入时间学习块选择与可视模式可视模式类型块操作示例v-字符可视模式,可以选择任意范围的文本块可视模式(Ctrl+v)特别适合于处理表格数据或需要在多行的相同位置进行编辑的场景V-行可视模式,以整行为单位进行选择
1.在多行代码前添加注释按Ctrl+v,选择多行行首,按I输入注释符,按ESC完成Ctrl+v-块可视模式,可以选择矩形区域
2.删除多行中的特定列按Ctrl+v,选择要删除的矩形区域,按d删除进入可视模式后,使用移动命令(如h、j、k、l)扩展选择范围按下ESC可以退出可视模式
3.替换多行中的特定列按Ctrl+v,选择要替换的矩形区域,按c进行替换可视模式操作d-删除选中文本y-复制选中文本-增加选中行的缩进-减少选中行的缩进U-将选中文本转换为大写u-将选中文本转换为小写可视模式是VIM引入的重要功能,大大增强了文本选择和操作的灵活性特别是块可视模式,可以轻松处理列数据和表格,这在传统的行编辑器中是很难实现的掌握可视模式可以让你更直观地操作文本,减少复杂命令的记忆负担内部帮助与文档VI基本帮助命令:help-打开VI的主帮助页面:help command-查看特定命令的帮助,例如:help yy:help option-查看特定选项的帮助,例如:help number在帮助窗口中,可以使用Ctrl+]跟随链接,Ctrl+o或Ctrl+t返回上一页用户手册:help user-manual-访问完整的用户手册用户手册以教程形式组织,系统地介绍了VI的各种功能和用法,非常适合系统学习可以使用:help usr_
01.txt等命令直接访问特定章节内置教程:help tutor-查看有关vimtutor的信息vimtutor是一个交互式教程,可以在命令行中通过vimtutor命令启动,非常适合初学者入门帮助搜索:helpgrep pattern-在所有帮助文件中搜索指定模式搜索结果会显示在quickfix窗口中,可以使用:cn跳转到下一个匹配项,:cp跳转到上一个匹配项VI的内部帮助系统非常全面,几乎覆盖了所有功能和命令养成查阅帮助的习惯,可以不断发现新功能,解决使用中遇到的问题不需要记住所有命令,知道如何查找帮助更为重要当遇到不熟悉的命令或操作时,及时查阅帮助可以快速提升使用技能设置常用个性化选项VI显示相关设置编辑相关设置:set number或:set nu-显示行号:set tabstop=4-设置制表符宽度为4个空格:set nonumber或:set nonu-隐藏行号:set shiftwidth=4-设置缩进宽度为4个空格:set ruler-在状态行显示光标位置:set expandtab-将制表符转换为空格:set showmode-在底部显示当前模式:set autoindent-自动缩进(新行保持与上一行相同的缩进):set showmatch-显示匹配的括号:set wrap-长行自动换行显示:set list-显示不可见字符(如制表符、换行符):set nowrap-长行不自动换行搜索相关设置保存设置:set ignorecase或:set ic-搜索时忽略大小写要永久保存这些设置,可以将它们添加到VI的配置文件中:set smartcase-智能大小写匹配(模式包含大写时区分大小写)•在Unix/Linux系统中,配置文件通常是~/.vimrc或~/.exrc:set hlsearch-高亮显示搜索结果•在配置文件中,不需要输入冒号前缀:set incsearch-增量搜索(输入时实时显示匹配)脚本与自动化VI自动保存缓冲区批量执行替换命令可以设置VI自动保存文件,避免意外丢失编辑内容可以创建文件包含VI命令,然后批量执行:set autowrite自动保存修改:set updatetime=300设置自动保存间隔(毫秒)$vi-c:%s/old/new/g|wq file.txt#单个命令$vi-s script.vi file.txt#执行脚本文件这些设置可以添加到配置文件中,实现持久化script.vi文件中可以包含多行VI命令,如:%s/pattern1/replace1/g:%s/pattern2/replace2/g:wq编辑Shell脚本场景自动执行命令VI与Shell脚本结合使用的常见场景可以设置根据文件类型自动执行特定命令•自动修改配置文件中的参数:autocmd FileTypepython setlocalexpandtab:autocmd BufNewFile*.sh0r•批量处理多个文件的内容~/.vim/templates/sh.tpl•提取和转换日志文件中的数据•生成报告和统计信息这些命令可以添加到配置文件中,实现特定文件类型的自动设置VI的自动化能力使其成为系统管理和批处理任务的强大工具通过结合Shell脚本和VI命令,可以实现复杂的文本处理任务自动化,大大提高工作效率特别是在服务器环境中,这些自动化能力尤为重要,可以减少手动操作的错误和时间成本VI与编码语言集成C/C++开发支持代码跳转与导航:set cindent-启用C语言风格的自动缩进:set tags=./tags,tags-设置tags文件路径:set cinoptions=...-自定义C缩进选项Ctrl+]-跳转到光标所在标识符的定义:make-直接在VI中编译项目Ctrl+t-返回上一个位置][和[}-在函数和代码块之间快速导航:tag funcname-跳转到指定函数定义VI对C/C++的支持非常全面,包括语法高亮、自动缩进和编译集成,使得编写和调试C/C++代码变得更加高效结合ctags工具,VI可以实现强大的代码导航功能,轻松在大型项目中定位函数和变量定义Python开发支持:set expandtab-使用空格而非制表符(Python推荐):set shiftwidth=4-设置缩进为4个空格:!python%-运行当前Python文件VI可以很好地适应Python的缩进要求,支持PEP8风格指南,并可以直接执行Python脚本进行测试插件基础(扩展介绍)VIM文件浏览插件语法高亮增强代码补全功能插件管理器NERDTree是最受欢迎的文件浏览器vim-polyglot等插件提供对数百种编YouCompleteMe等插件提供智能代vim-plug是一个流行的VIM插件管理插件之一,提供树状结构显示文件程语言和文件格式的语法高亮支码补全功能,可以分析当前上下器,它简化了插件的安装、更新和系统,方便在项目中导航持,远超过VI内置的有限支持文,提供相关的变量、函数和类的删除过程补全建议通过:NERDTree命令打开侧边栏文这些插件不仅提供基本的高亮,还通过简单的配置,可以声明性地管件浏览器,可以浏览、打开和管理能识别复杂的语法结构,支持更精一些补全插件还支持函数参数提理所有插件,并使用:PlugInstall等文件,大大简化多文件项目的处确的缩进和折叠示、错误检查和实时语法验证等功命令进行批量操作,保持插件的最理能,接近现代IDE的体验新状态虽然原始的VI不支持插件,但其现代版本VIM提供了强大的插件系统通过安装适合的插件,可以将VIM扩展为功能全面的IDE,同时保持其轻量级和高效的特性对于经常使用VI/VIM的用户,了解常用插件可以大大提升工作效率和使用体验VI常用快捷键速查表分类命令功能描述基本操作:w保存文件:q退出编辑器:wq或ZZ保存并退出:q!强制退出不保存模式切换i在光标前进入插入模式a在光标后进入插入模式o在下方新行插入ESC返回普通模式光标移动h,j,k,l左,下,上,右0或^移到行首$移到行尾gg移到文件首G移到文件尾编辑操作x删除当前字符dd删除当前行yy复制当前行p粘贴到光标后u撤销上一操作Ctrl+r重做操作这张速查表列出了VI中最常用的基本命令建议打印出来随身携带或贴在工作区,方便查阅随着使用经验的积累,这些命令会逐渐成为肌肉记忆,大大提高编辑效率对于初学者来说,掌握这些基本命令已经足够应付日常的编辑任务课堂案例编辑Shell脚本案例目标步骤3保存文件在本案例中,我们将使用VI创建并编辑一个简单的Shell脚本,该脚本用于统计指定目录中各类型文件的数量按ESC返回普通模式,然后输入:wq保存并退出步骤1创建新文件步骤4设置执行权限$vi file_counter.sh$chmod+x file_counter.sh步骤2编写脚本内容步骤5测试脚本按i进入插入模式,输入以下内容$./file_counter.sh/path/to/directory#!/bin/bash#文件计数器脚本#统计指定目录中各类型文件的数量if[$#-ne1];then echo用法:$0目录路径exit1fiDIR=$1ifVI技巧应用[!-d$DIR];then echo错误:$DIR不是一个有效的目录exit2fiecho分析目录:$DIRecho------------------------#统计各类型文件TOTAL=$find$DIR-type f|wc-lTEXT=$find$DIR-type f-name*.txt|wc-lSHELL=$find$DIR-type f-•使用增加缩进,减少缩进name*.sh|wc-lPYTHON=$find$DIR-type f-name*.py|wc-lOTHER=$TOTAL-TEXT-SHELL-PYTHONecho文本文件•使用:set number显示行号,方便调试*.txt:$TEXTecho Shell脚本*.sh:$SHELLecho Python脚本*.py:$PYTHONecho其他文件:$OTHERecho------------------------echo总计:$TOTAL个文件•使用/关键字快速定位需要修改的位置•使用dd删除错误行,u撤销错误操作•使用:syntax on启用语法高亮,提高可读性案例配置服务器环境文件1打开配置文件使用VI打开服务器配置文件$vi/etc/apache2/sites-available/000-default.conf或者使用sudo获取足够的权限$sudo vi/etc/apache2/sites-available/000-default.conf2批量替换IP配置假设需要将所有的
192.
168.
1.100替换为
10.
0.
0.50:%s/192\.168\.1\.100/
10.
0.
0.50/g注意点号需要转义,否则会被解释为匹配任意字符执行命令后,VI会显示替换的次数,例如3substitutions on3lines3查找并注释多余配置行首先,使用搜索找到需要注释的配置行/Unused Configuration然后,使用可视模式(V)选择多行,并使用I插入注释符号
1.按V进入行可视模式
2.使用j选择多行
3.按I进入插入模式(在行首)
4.输入#(注释符号)
5.按ESC完成操作4保存并验证配置保存文件并退出VI:wq验证配置文件语法是否正确$apache2ctl configtest如果配置正确,应该显示Syntax OK,然后可以重启服务应用新配置编写说明文档与代码注释多光标编辑技巧快速插入时间戳和作者信息VIM中的多光标编辑可以大大提高注释和文档编写效率在VIM中可以使用命令或映射快速插入当前时间和作者信息
1.使用Ctrl+v进入块可视模式:r!date
2.选择多行的开头位置
3.按I进入插入模式这会在当前位置插入系统日期和时间
4.输入注释符号或文档标记也可以在配置文件中定义快捷键映射
5.按ESC完成多行同时编辑这种技术特别适合为多行代码添加相同的注释前缀或文档标记map i=strftime%Y-%m-%d%H:%M:%S-作者:Your Name代码注释模板这样按F5键就可以快速插入带格式的时间戳和作者信息可以在VI中创建函数或类的注释模板,提高文档一致性/***函数名称:functionName*功能描述:*参数列表:*param1-*param2-*返回值:*作者:*创建日期:*/应急场景演练崩溃恢复VI1识别系统崩溃情况当VI非正常退出(如系统崩溃、网络连接中断或意外关闭终端)后,下次打开相同文件时可能会看到以下警告E325:ATTENTIONFound aswap fileby thename.file.swp...这表示VI检测到了之前未正常关闭的编辑会话,提供了几种恢复选项2使用recover命令恢复如果看到上述警告,可以选择Recover选项,或者直接使用恢复命令$vi-r filenameVI会尝试从交换文件中恢复未保存的更改恢复完成后,记得检查内容并保存文件3手动处理交换文件如果恢复成功,应该删除交换文件以避免下次打开时再次出现警告$rm.filename.swp交换文件通常位于同一目录下,文件名前加点,后缀为.swp4了解交换文件机制VI使用交换文件来保存编辑过程中的更改,提供意外情况下的数据保护交换文件的更新频率可以通过以下设置控制:set updatetime=1000设置为1000毫秒(1秒)较低的值会导致更频繁的保存,提供更好的保护,但可能会导致系统负担增加VI的交换文件机制是一项重要的数据保护功能,可以在系统崩溃或网络中断等意外情况下帮助恢复未保存的更改了解如何识别和处理崩溃恢复情况,是每个VI用户应该掌握的基本技能定期保存工作进度(:w)仍然是防止数据丢失的最佳实践性能与资源占用调研2MB1%1s内存占用CPU使用率启动时间VI编辑器在运行时通常只占即使在处理大型文件时,VI VI的启动速度非常快,通常用不足2MB的内存,这使的CPU使用率也通常保持在不到1秒,无论是本地使用其成为资源受限环境下的很低的水平,通常不超过还是通过SSH远程连接这理想选择相比之下,图1%这意味着它可以在后使得快速编辑文件变得非形化编辑器如VSCode可能台运行而不会明显影响系常便捷,无需等待编辑器需要几百MB甚至几GB的内统性能加载存VI的极低资源消耗使其能够在几乎任何环境中运行,包括资源极为有限的嵌入式Linux系统、老旧硬件或虚拟机实例这也是为什么几乎所有Unix/Linux发行版都默认安装VI,它可以在系统资源紧张的情况下提供可靠的文本编辑功能在服务器环境中,这种低资源消耗特别重要,因为服务器通常需要将大部分资源用于运行服务和应用程序,而不是工具软件VI的轻量级特性使其成为服务器管理和配置的理想工具替代文本编辑器比较VI编辑器运行环境批量操作插件/定制VI几乎全Linux支持限制VIM全平台强大极丰富Nano Linux简单无Emacs全平台极强极强VI/VIM的优势其他编辑器特点•几乎所有Unix/Linux系统预装,可立即使用•Nano简单易用,适合初学者,但功能有限•极低的资源消耗,适合远程和嵌入式环境•Emacs功能极其强大,可扩展性高,但资源消耗大•强大的模式编辑和命令系统,提高编辑效率•Sublime Text现代GUI编辑器,速度快,但不适合纯命令行环境•完全键盘操作,减少鼠标切换时间•VSCode功能全面的现代IDE,插件丰富,但资源消耗大,不适合远程服务器•学习曲线虽陡但一旦掌握效率极高在选择文本编辑器时,需要考虑多种因素,包括使用环境、个人习惯和需要完成的任务类型VI/VIM在服务器环境和系统管理任务中具有明显优势,而现代GUI编辑器在复杂项目开发中可能提供更多便利许多专业人士会掌握多种编辑器,根据具体场景灵活选择用户场景运维工程师批量日志处理批量替换配置内容CLI自动化场景运维工程师经常需要分析大量日志文件,VI的强大文在管理大量服务器时,需要频繁修改配置文件运维自动化是提高效率的关键,VI是创建和维护自动本处理能力使这一任务变得高效化脚本的理想工具•使用:%s/old_ip/new_ip/g快速替换IP地址•使用:g/ERROR/p快速定位所有错误日志•编写和维护Shell、Python自动化脚本•利用块编辑模式批量修改多行配置•利用宏录制实现复杂的日志解析和格式化•利用VI的语法高亮和自动缩进提高脚本质量•创建VI脚本自动化配置更新过程•结合grep和VI处理TB级日志文件•直接在服务器上测试和调试脚本对于运维工程师来说,VI是日常工作中不可或缺的工具无论是管理单个服务器还是成百上千的服务器集群,VI的轻量级特性、强大的文本处理能力和自动化支持都能显著提高工作效率掌握VI不仅是一项技能,更是运维工程师的基本素养特别是在紧急故障处理时,VI的快速启动和低资源消耗特性尤为重要,可以在系统负载高或资源紧张的情况下仍然能够可靠地进行文件编辑和问题诊断用户场景开发工程师编辑源码比对代码块开发工程师可以利用VI高效编辑各种编程语言的源代码在代码审查和合并过程中,开发者经常需要比对不同版本的代码•使用语法高亮提高代码可读性•使用:diffsplit比较两个文件的差异•通过自动缩进保持一致的代码风格•利用块选择模式进行精确的代码段复制和移动•使用标签跳转快速导航大型代码库•通过标记快速在相关代码段之间跳转•利用宏自动化重复的编码任务故障排查•结合ctags实现函数和变量定义的快速查找在调试和故障排查过程中,VI是分析日志和检查配置的理想工具VI的模式编辑特性使得执行复杂的代码修改变得简单高效,减少了重复性工作•快速搜索错误信息和异常堆栈•使用正则表达式过滤复杂的日志模式•在不影响系统性能的情况下处理大型日志文件用户场景学生与实训计算机基础教育VI编辑器在计算机科学教育中扮演着重要角色•作为Unix/Linux基础课程的必修内容•培养学生对命令行环境的适应能力•介绍文本处理和编程的基本概念•帮助学生理解软件工具的历史和发展掌握VI是理解Unix哲学和命令行文化的重要一步实践技能培养通过学习VI,学生可以培养多种实用技能•提高键盘输入效率,减少对鼠标的依赖•锻炼问题解决能力和工具适应能力•培养精确和系统化的工作方法•为未来的专业工作打下基础这些技能不仅适用于VI,还可以迁移到其他工具和环境中考核与评估VI常被用作计算机技能评估的一部分•大学计算机基础课程的实践考核•系统管理和软件开发岗位的技能测试•开源社区贡献者的基本要求•企业技术面试的常见环节熟练使用VI可以在多种评估场景中展示技术能力对于学生来说,学习VI不仅是掌握一个工具,更是理解计算机历史和文化的窗口虽然现代有更多直观的编辑器可供选择,但VI的学习价值在于它培养的思维方式和解决问题的能力许多教育者认为,通过VI这样的基础工具学习,可以帮助学生建立更牢固的计算机科学基础,为未来的专业发展打下坚实基础课堂练习快速整理配置文件1练习目标任务要求在5分钟内使用VI编辑器格式化一个混乱的配置文件,包括缩进调整和批量注释无用配置
1.规范化所有缩进(使用空格或制表符保持一致)
2.注释掉所有包含过时字样的配置块练习材料
3.为主要配置部分添加简短的说明注释server{listen80;server_name example.com;root/var/www/html;location/{try_files VI技巧应用$uri$uri//index.php$query_string;}#以下配置可能已过时location~\.php${fastcgi_passunix:/var/run/php/php
7.4-fpm.sock;include snippets/fastcgi-php.conf;}location=•使用gg=G自动调整整个文件的缩进/favicon.ico{access_log off;log_not_found off;}location=/robots.txt{access_log•使用/过时快速定位需要注释的部分off;log_not_found off;}error_page404/index.php;}•使用V进入行可视模式,选择多行•使用:s/^/#/批量添加注释•使用o插入新行添加说明注释这个练习旨在培养学生快速处理配置文件的能力,这是系统管理和开发工作中的常见任务通过实践,学生可以体验VI在文本整理和格式化方面的高效性,特别是在处理缩进和批量修改时完成这类任务的能力对于未来的运维工作至关重要,而VI提供了完成这些任务所需的所有工具课堂练习日志排序与筛选21练习目标2练习材料使用VI编辑器从混乱的日志文件中提取时间信息,并按照时间顺序排序,同时过滤掉无关的调试信息[DEBUG]2023-10-1514:32:45系统启动中...[ERROR]2023-10-1514:35:10无法连接到数据库[INFO]2023-10-1514:33:22加载配置文件[DEBUG]2023-10-1514:33:45检查依这个练习模拟了运维工程师在故障排查时的常见任务,需要从大量日志中快速定位关键信息赖项[WARN]2023-10-1514:34:15磁盘空间不足[ERROR]2023-10-1514:36:30服务启动失败[DEBUG]2023-10-1514:34:00初始化缓存[INFO]2023-10-1514:35:45尝试重新连接[DEBUG]2023-10-1514:36:00清理临时文件3任务要求4VI技巧应用
1.使用VI的正则表达式功能提取包含日期时间的行•使用:g/\[DEBUG\]/d删除所有调试日志
2.删除所有[DEBUG]级别的日志条目•使用:%!sort-k2,3命令调用外部sort程序按时间排序
3.按照时间顺序排序剩余的日志•使用:%s/\[ERROR\]/\[**ERROR**\]/g为错误日志添加标记
4.为不同级别的日志添加不同的视觉标记(可选)•使用:set number显示行号,方便参考这个练习强调了VI在文本处理和日志分析中的实用性通过结合VI的内部命令和外部工具(如sort),学生可以学习如何构建高效的文本处理流程这些技能在真实的系统管理和故障排查场景中非常有价值,能够帮助快速从大量信息中提取关键内容,定位问题根源课堂练习3自定义键映射练习目标任务要求学习如何使用VI的map命令创建自定义键映射,实现一键执行常用操作,提高编辑效率
1.创建一个映射,使用F2键保存当前文件基本映射概念
2.创建一个映射,使用F3键保存并退出
3.创建一个映射,使用F4键自动插入当前日期map-在普通模式下映射键
4.创建一个映射,使用F5键在当前行下方插入分隔线imap-在插入模式下映射键示例映射命令nmap-仅在普通模式下映射键vmap-在可视模式下映射键:map:w:map:wq:map i=strftime%Y-%m-%d:map o#--------------------------------映射语法:map键序列映射命令这些命令可以在编辑会话中输入,也可以添加到~/.vimrc文件中永久保存版本更新与未来VI近期主要发行版本未来发展趋势虽然原始的VI编辑器变化不大,但其现代化衍生版本VIM持续发展云端编辑支持在浏览器中运行的VI/VIM实现,如Vim.js和CloudVim远程自动同步编辑文件时自动与远程存储同步,支持协作编辑VIM
8.0(2016年)引入异步I/O支持,允许后台执行任务而不阻塞编辑器AI集成与代码补全和分析工具集成,提供智能建议VIM
8.1(2018年)添加终端窗口支持,可以在编辑器内运行终端语言服务器更深入地集成LSP(Language ServerProtocol),提供跨语言的智能功能VIM
8.2(2019年)改进弹出窗口和完成菜单,增强语言服务器协议支持现代UI在保持高效键盘操作的同时,提供更友好的用户界面VIM
9.0(开发中)预计将引入更现代的脚本语言和更强大的用户界面支持NeoVim作为VIM的一个分支,也在积极发展,引入了更多现代特性,如内置终端、异步API和更好的插件架构行业内应用真实案例VI金融行业配置管理某大型银行的IT运维团队使用VI来管理其核心交易系统的配置文件由于安全要求,这些服务器不允许安装图形界面或额外软件,VI成为唯一可用的编辑工具团队开发了一套基于VI的自动化脚本,可以快速检查、验证和部署配置更改,大大减少了人为错误和系统停机时间通信行业批量运维某通信公司的网络工程师负责管理数千台网络设备他们使用VI编写的脚本来批量更新设备配置,执行安全审计和故障排查通过VI的正则表达式和批处理能力,工程师能够快速分析大量设备日志,识别潜在问题,并在几分钟内完成原本需要数小时的配置更改数据工程师文本清洗某大数据分析公司的数据工程师使用VI处理原始数据文件在将数据导入数据库前,他们需要清理格式不一致、缺失值和异常数据VI的强大文本处理功能使他们能够快速转换文件格式,应用复杂的正则表达式进行数据验证,并生成用于数据加载的SQL脚本这些任务通常需要处理GB级的文本文件,VI的低资源消耗使其成为理想的工具这些真实案例展示了VI在现代企业环境中的实际应用价值尽管有许多更现代的工具可供选择,但VI在特定场景下的高效性和可靠性使其仍然是许多专业人士的首选工具特别是在需要处理大量文本数据、在资源受限环境中工作或需要高度自动化的场景中,VI的优势尤为明显VI与开源精神社区贡献GitHub相关项目自1990年以来,VI(特别是其衍生版本VIM)已经吸引了超过1000名开发者的贡献这些贡献包括在GitHub上,与VI/VIM相关的项目超过5万个,包括•核心功能改进和bug修复•核心编辑器的分支和改进版本(如NeoVim)•新语言的语法高亮和支持•各种功能插件和扩展•性能优化和跨平台兼容性•定制配置和主题•文档翻译和教程编写•教程和学习资源•创新插件和扩展功能•集成其他工具的接口VI的开发模式体现了开源软件的协作精神,不同背景和技能的开发者共同维护和改进这个工具,使其持续适应不断变化的技术环境这个庞大的生态系统不仅丰富了VI的功能,也培养了一个活跃的用户和开发者社区,持续推动工具的发展和普及学生自主项目展示小型工具开发学生王明展示了他使用VI开发的代码格式化工具•使用VI编写的Python脚本,能够自动格式化多种编程语言的源代码•结合VI的宏功能,创建了自定义的代码模板系统•开发过程中全程使用VI,展示了纯键盘操作的高效工作流•项目代码已在GitHub上开源,获得了超过100个星标这个项目展示了VI不仅是一个编辑工具,还可以成为创造新工具的平台团队协作实践张三和李四小组分享了他们使用VI进行团队协作的经验•创建了一套统一的VI配置文件,确保团队成员有一致的编辑环境•开发了一系列自动化脚本,用于处理日志分析和报告生成•使用Git进行版本控制,VI作为主要的代码编辑工具•通过这种方式,他们成功完成了一个需要处理大量日志文件的项目这个案例展示了VI在团队环境中的实用价值,特别是在处理大型文本数据时提效实践分享研究生赵丽分享了她使用VI提高研究效率的经验•使用VI处理实验数据,自动提取和格式化关键指标•创建了一套LaTeX模板,使用VI编写学术论文•通过自定义宏自动化参考文献格式调整•估计节省了30%的数据处理时间,大大加速了研究进度这个案例展示了VI在学术研究中的应用价值,特别是在处理结构化文本数据时学生自主项目是理论知识与实践应用的桥梁通过这些项目,学生不仅巩固了课堂所学的VI技能,还将这些技能应用到解决实际问题中,培养了创新思维和实践能力这些项目也为其他学生提供了灵感和参考,创造了一个良性的学习循环教师可以鼓励更多学生分享自己的VI应用案例,促进相互学习和技能交流学习资源与拓展阅读推荐书籍在线资源《VI andVIM EditorsPocket Reference》-Arnold Robbins著,OReilly出版VIM官方文档https://www.vim.org/docs.php《Learning theVI andVIM Editors》-Arnold RobbinsLinda Lamb著,OReilly出版Vimcasts http://vimcasts.org/-一系列关于VIM技巧的视频教程《Practical VIM:Edit Textat theSpeed ofThought》-Drew Neil著,Pragmatic Bookshelf出版Learn Vimscriptthe HardWay http://learnvimscriptthehardway.stevelosh.com/-深入学习VIM脚本《VIM用户手册》-Bram Moolenaar著,多语言版本,包括简体中文VIM Adventureshttps://vim-adventures.com/-一个通过游戏学习VI的网站这些书籍从不同角度和深度介绍了VI/VIM的使用方法和技巧,适合不同水平的读者MOOC课程Coursera《Unix工具和脚本》课程中包含VI部分Udemy《VIM大师班从初学者到专家》中国大学MOOC多个Linux基础课程中包含VI教学单元结业测评安排考核内容结业测评将采用全操作型考核方式,要求学生在15分钟内完成指定的编辑流程测评内容包括•基础操作文件打开、保存、退出•文本编辑插入、删除、复制、粘贴•查找替换使用正则表达式•格式调整缩进、注释、行号显示•高级操作宏录制、多文件编辑实操要求测评将提供一个包含多种错误和格式问题的示例文件,要求学生使用VI完成以下任务
1.修复所有语法错误
2.规范化代码格式和缩进
3.添加适当的注释
4.实现特定的文本转换要求
5.保存结果并提交评分标准测评将从以下几个方面进行评估•操作准确性修改是否准确完成•操作效率使用的命令是否高效•代码质量格式是否规范,注释是否清晰•时间控制是否在规定时间内完成•问题解决遇到问题时的处理方法结业认证成功通过测评的学生将获得•VI编辑器基础技能证书•完成课程的学分认证•优秀学员将有机会参与高级VI应用课程这种实操为主的测评方式旨在评估学生对VI的实际应用能力,而不仅仅是理论知识通过模拟真实工作场景中的编辑任务,可以全面检验学生的熟练度和解决问题的能力建议学生在测评前多进行实际操作练习,熟悉常用命令,提高操作速度和准确性课程总结与展望课程主要收获未来应用展望•掌握了VI的三种基本模式和工作原理VI已成为程序员、运维专家和系统管理员的日常必备工具,其应用领域将继续扩展•熟悉了常用的编辑、导航和查找替换命令•DevOps环境中的配置管理和自动化脚本编写•学会了使用宏和脚本实现自动化操作•云计算平台的远程服务器管理•理解了VI在系统管理和开发中的应用场景•大数据处理中的文本分析和转换•培养了高效文本处理的思维方式和技能•嵌入式系统开发和物联网设备配置这些技能不仅适用于VI编辑器,也构成了文本处理和编程的基础能力,将在各种专业场景中发挥价值•容器化环境中的轻量级编辑需求随着技术的发展,VI的核心价值—高效、轻量、可靠—将继续保持其重要性。
个人认证
优秀文档
获得点赞 0