当前位置: 首页 > Linux

Linuxvi深入浅出,从入门到精通

时间:2023-04-06 04:50:58 Linux

简介vi是unix平台下知名的文本编辑器,熟练使用它可以大大提高你的效率。作为vi的增强版,vim功能强大且高度可定制,深受社区用户的推崇。快速入门三种模式插入模式(insert)用于输入文本。在插入模式下,您键入的任何字符都将显示在屏幕上并保存在文件中。命令(command)模式用于大多数编辑功能。在命令模式下,所有的输入都会产生一定的响应,而不是直接输入文本,例如移动光标,删除一段文本,复制文本等。第三种模式是执行附加功能,例如查找,全局替换,处理多个文件等输入文件vifile_name。如果vi后跟文件名,则可以打开编辑界面。如果该文件不存在,将创建一个新文件。进入文件后,其实是进入了命令模式。此时无法正常编辑文件。vifilename:打开或新建一个文件,光标置于第一行行首vi+nfilename:打开文件,光标置于第n行行首vi+filename:打开文件,并将光标置于最后一行的行首vi+/patternfilename:打开文件并将光标置于与模式匹配的第一个字符串上vi-rfilename:上次使用vi编辑时系统崩溃,恢复文件名vi文件名。...filename:open按顺序编辑多个文件。在插入模式下进入文件后,可以按i,一个命令进入编辑模式。这时候,你可以输入任何你想输入的内容。保存退出输入完成后按ESC返回命令模式。:wq保存文件,退出:q退出。防止不保存就退出。:问!辞职。保存或不保存退出。:哇!强制保存作为系统自带的软件,很容易使用vi--version命名模式下移动光标常用的快捷键,可以按以下快捷键快速移动光标。h左字符j下一行k上一行l右字符w,W前一个词(W忽略标点符号)b,B下一个词(B忽略标点符号)$到行尾^到行首的第一个非空白字符0从行的第一个G到缓冲区的第一个nG到第n行你想向下移动3行“3j”并向后移动3个单词“3w”。其他操作相同。快速编辑x向后删除一个字符dw删除一个单词d3w删除三个单词dd删除一行d向下箭头向下删除两行d向上箭头向下删除两行D向后删除u撤消操作:sh切换到命令行,使用ctrl+d切换回vim。对于其他命令,请参阅文章末尾突出显示的配置。输入vi--version找到vi配置文件。配置文件地址:系统vimrc文件:"$VIM/vimrc"用户vimrc文件:"$HOME/.vimrc"第二用户vimrc文件:"~/.vim/vimrc"用户exrc文件:"$HOME/.exrc"fall-backfor$VIM:"/usr/share/vim"打开配置文件/usr/share/vim/vimrc作为默认配置,不能修改。所以编辑当前用户的$HOME/.vimrc文件,编辑配置文件注意:注释以"""开头。"vimsetmodelines的配置文件=0"CVE-2007-2438"通常我们使用vim扩展。如果你想要真正的vi兼容性"删除更改??以下语句setnocompatible"UseVimdefaultsinsteadof100%vicompatibilitysetbackspace=2"更强大的backspacingsetai"autoindentingsethistory=100"keep100linesofhistorysetruler"showthecursorpositionssyntaxon"syntaxhighlightingsethlsearch"highlightthelastsearchedtermfiletypepluginon"usethefiletypeplugins"setnuopenlinenumcolorschemedesert"当编辑一个文件,总是跳转到最后一个光标位置autocmdBufReadPost*\if!exists("g:leave_my_cursor_position_alone")|\ifline("'\"")>0&&line("'\"")<=line("$")|\exe"normalg'\""|\endif|\endif"如果vim正在被"crontab-e"auBufWrite/private/tmp/调用,则不要写入备份文件crontab.*setnowritebackupnobackup"如果vim被"chpass"调用,不要写入备份文件auBufWrite/private/etc/pw.*setnowritebackupnobackup主题配置列出所有主题ls/usr/share/vim/vim74/colors然后在配置文件中指定对应的colorscheme例如:`colorschemedesert`demo移动光标的更多命令命令h:将光标向左移动一个字符l:将光标向右移动一个字符space:移动光标光标向右移动一个字符Backspace:将光标向左移动一个字符k或Ctrl+p:将光标向上移动一行j或Ctrl+n:将光标向下移动一行Enter:将光标向下移动一行w或W:光标右移一个词到字首b或B:光标左移一个字到字首e或E:光标右移一个字到字尾):光标移动到句末(:光标移动到句首}:光标移动到段首{:光标移动到段尾nG:光标移动到第n行首n+:光标下移n行n-:光标上移n行n$:光标移到第n行行尾H:光标移到屏幕首行M:该行光标移动到屏幕中间行L:光标移动到屏幕末尾Line0:(注意是数字零)将光标移动到当前行的行首$:将光标移动到行尾当前行的屏幕滚动命令Ctrl+u:翻半屏到文件开头Ctrl+d:翻半屏到文件末尾Ctrl+f:翻半屏到文件末尾Ctrl+b;Scrollonescreentothebeginningofthefilenz:将第n行滚动到屏幕顶部,如果不指定n,则将当前行滚动到屏幕顶部。插入文本命令i:光标前I:当前行行首a:光标后A:当前行行尾o:在当前行下开新行O:在当前行上开新行行r:替换当前字符R:替换当前字符和后面的字符,直到按下ESC键s:从当前光标位置开始,用输入文本替换指定数量的字符S:删除指定数量的行,并用ncw或nCW替换输入文本:修改指定的字数nCC:修改指定的行数delete命令ndw或ndW:删除从光标处开始的n-1个字符do:删除到行首d$:删除到行尾ndd:删除当前行及其后n-1行x或X:删除一个字符,x删除光标后,X删除光标前Ctrl+u:删除文本在输入模式下输入搜索替换命令/模式:从光标开始从文件末尾搜索模式?pattern:从光标开始到文件开头搜索模式n:重复上一个搜索命令同方向N:反方向重复上次搜索命令:s/p1/p2/g:复制当前行文件中所有p1都替换为p2:n1,n2s/p1/p2/g:所有p1inn1到n2行被p2替换:g/p1/s//p2/g:替换文件中的所有p1p2替换选项setall:列出所有选项设置条件项:设置终端类型忽略:忽略搜索中的大小写list:显示制表位(Ctrl+I)和行尾符号($)number:显示行号report:显示被面向行的命令修改的行号terse:显示一条简短的警告消息warn:显示NOwrite消息如果切换到另一个文件时当前文件没有保存特殊字符"nowrapscan:禁止vi搜索到文件两端时从另一端开始mesg:允许vi显示其他用户自己写的信息terminalwithwriteLastlinemodecommandn1,n2con3:changen1lineCopythelinebetweenlinen2tolinen1,n2mn3:movethecontentbetweenlinen1tolinetolinen1,n2d:movethecontentbetween行之间的内容linen1tolinen2Contentdeletew:保存当前文件efilename:打开文件filename进行编辑x:保存当前文件并退出q:退出viq!:不保存文件并退出vi!command:执行shell命令commandn1,n2w!command:放入文件n1行到n2行的内容作为命令的输入并执行。如果不指定n1和n2,则表示将整个文件内容作为命令的输入r!command:将命令command的输出结果放入当前行寄存器操作?:将当前行和后面n行的内容保存到寄存器中?,在哪里?是一个字母,n是一个数字?nyw:将当前行及其接下来的n个单词保存到寄存器中?,在哪里?是一个字母,n是一个数字?nyl:将当前行及其接下来的n个字符保存到寄存器中?其中,在哪里?是字母,n是数字?p:取出寄存器?并将其放在此处的光标位置?可以是字母也可以是数字ndd:删除当前行及其下n行文本,将删除的内容放入1号删除寄存器。