当前位置: 首页 > Linux

Linux基本命令介绍四:文本编辑vim_0

时间:2023-04-06 03:21:51 Linux

本文介绍了vim(7.4版)的一般用法vim是一个强大的文本编辑器,是vi的增强版。vim[options][file..]使用vim编辑文件最常用的命令是:vimfile其中file可以是新文件或现有文件。执行完这样的命令后,编辑器会打开并显示文件file的内容。如图:如果是新文件,底部左边会显示“文件”[新文件]字样,右边会显示0,0-1表示行数和光标当前所在的字符。如果打开旧文件,左下角会显示“文件”3L、66C,分别表示文件名、当前光标所在行号、文件总字节数。如果文件中没有字符,它将以字符~开头。仍然无法编辑。在vim中有几种编辑文件的模式。当前模式为普通模式,可以移动光标,执行复制粘贴等命令;还有两种常见的模式:插入模式和底线模式。一开始进入一般是普通模式。按以下键进入插入模式:a从光标位置的下一个字符开始打字A从光标所在行的末尾开始打字i从光标位置开始打字I从行首开始打字光标所在行o在光标所在行下新增一行,并在新行开头开始打字O在光标所在行上方新增一行,并在新行开头开始打字line进入插入模式后,最下面会出现--insert-字;现在您可以在光标位置输入。要从插入模式返回到正常模式,请按ESC键。在普通模式下,按以下键进入底线模式::执行命令/向前搜索?反向搜索从底线模式返回到普通模式,按两次ESC键执行底线模式:q(quit)表示退出编辑器,如果文件内容已经改变,需要执行:wq(写quit)保存退出;如果不保存退出,需要执行:q!强制退出;强制保存并退出是:wq!。以下是在普通模式下可以执行的一些命令及其作用:文本修改:。重复前面的命令x删除光标位置的字符d从光标位置开始剪切dd在光标位置剪切整行(保存在Temporarybuffer中)nddn是一个数字,表示从当前行开始,剪切nlinesfromtoptobottomp把缓冲区中的内容放到当前行的下面npn是一个数字,相当于执行p命令n次Pwill把缓冲区中的内容放到当前行的上面y从光标处复制yy复制当前行(保存在临时缓冲区)nyyn是一个数字,表示从当前行开始,从上到下复制n行r替换光标所在位置R处的一个字符,从光标位置替换,并进入文本输入模式(ESC退出)u撤销上次操作ZZ保存退出移动光标:h或左方向键将光标左移l或右方向键将光标右移j或下方向键使光标下移一格k或上方向键使光标上移一格0光标移动到当前行首^光标移动到当前行首line非空白字符(如空格、tab键等)$将光标移动到当前行行尾g_将光标移动到当前行非空白字符行尾w将光标移动到下一个单词的开头e移动光标到下一个单词的结尾*匹配光标所在的单词,移动到下一个相同的单词#匹配光标所在的单词,移动到上一个相同的单词f{movethe光标移到当前行的下一个字符{,{可以用其他字符替换F}将光标移到当前行的上一个字符}t,将光标移到T当前行下一个逗号前的字符处,光标移动到当前行上一个逗号后的字符%移动到成对括号的另一半,包括(){}[]。您需要先将光标移动到括号。gg将光标移动到文件第一行行首G将光标移动到文件最后一行行首Enter键将光标移动到下一行行首这里只是一部分,初学者可能会发现太多不记得了。其实,只要记住其中的几个,就可以完全使用;大多数其他功能都是为了让您的操作更轻松、更快捷。vim中的各种命令大部分都可以组合使用:比如要删除光标当前位置直到行尾,可以执行d$;例如,要在当前位置插入50个'word',只需执行50iwordESC,然后按ESC键,即可插入50个单词;比如你想粘贴复制的内容,但是你想粘贴5次,那就执行5p;比如你想再执行5次最后一条命令,那就执行5次。提高写文件的速度。在插入模式下(普通模式下按a、i、o等),输入单词的开头,然后按CTRL-P或CTRL-N自动补全。底行模式有三个起始字符(:、/、?),其中/和?用于匹配模式搜索:比如在文件中搜索字符串centos:/centos输入这个字符串回车后,vim会把所有匹配的字符串高亮显示,按n键,光标会跳转到下一个匹配字符串,按N键,光标会跳转到上一个匹配。(思考人查询)使用?and/做同样的事情,但相反。:可以执行很多命令,比如前面介绍的保存退出命令:wq。下面介绍一些底行模式的命令::setnu显示行号:setnonu隐藏行号:rfile读取文件file的内容写入当前编辑的文件,内容将从光标的当前位置。:wfile将当前编辑的内容写入一个新的文件file。:s/pattern/string/将字符串匹配模式替换为string:x功能同:wq,保存退出。:!command暂时离开vim,执行shellcommand命令。:help查看帮助:.=显示当前行号:=显示总行数:n移动光标到第n行行首-l也可以在其他模式下组合命令,比如替换所有匹配模式字符串当前行::s/pattern/string/g#g表示全局,比如替换本文件中所有匹配的模式字符串::%s/pattern/string/g#%表示所有行,比如替换本文件的匹配字符串specifiedline::n,ms/pattern/string/g其中n和m为数字,代表行号。你可以使用点。代表当前行。比如删除当前行到第五行的内容::.,5d当当前行在第五行以下时,会有反向删除提示。正则表达式当使用/pattern和:s/pattern/string时,pattern是用于匹配字符串模式的正则表达式。正则表达式和前面介绍的通配符(基本命令介绍2)有一些相似之处,但要注意区分两者的区别。通配符主要用来匹配文件名,而正则表达式不仅可以用来匹配文件名,实际上它可以匹配任何字符串。它比通配符更通用,大多数编程语言和一些工具(如vim、grep、awk、sed)都直接支持正则表达式。下面介绍一些会用到的正则表达式的概念和用法:匹配位置:^表示行首$表示行尾<表示词首>表示词尾匹配字符:.表示匹配任意单个字符(相当于?)[...]表示匹配括号内的任意单个字符[^...]表示匹配任意未列出的字符#参考通配符说明\a匹配英文字符,相当于[a-zA-Z]或[[:alpha:]]。\A匹配非英文字符,相当于[^a-zA-Z]。\d匹配数字,相当于[0-9]或[[:digit:]]。\D匹配非数字,相当于[^0-9]。\x匹配一个十六进制数字,相当于[0-9A-Fa-f]或[[:xdigit:]]。\X匹配非十六进制数字,相当于[^0-9A-Fa-f]。\w匹配一个词,相当于[0-9A-Za-z_]。\W匹配非单词,等价于[^0-9A-Za-z_]。\t匹配TAB字符。\s匹配空白字符,相当于[\t]或[[:blank:]]。\S匹配非空白字符,相当于[^\t]。\u匹配大写字母,相当于[A-Z]或[[:upper:]]。\U匹配非大写字母。\n匹配一个换行符\r匹配一个回车符(...)匹配并捕获,使用\1\2\3...来引用捕获的字符串。|表示逻辑或匹配次数:*表示匹配前一个字符零到任意次数,相当于{0,}。+表示匹配前一个字符一到任意次,相当于{1,}。?表示匹配前一个字符零到一次,相当于{0,1}。#注意通配符的区别?{n,m}表示匹配前一个字符n到m次。在使用正则表达式时,有时需要在特殊字符前加上转义符“\”,使特殊字符只代表其字面意义,而不是其特殊含义。在特定工具中使用正则表达式时也需要这样做,以避免工具本身解释特殊字符。vim使用以下正则表达式时,需要对特殊字符进行转义:\<...\>,\{n,m},\(...\),\?,\+,\|解释一下vim中的模式匹配和一些命令的用法来匹配字符串world并使光标停留在匹配行后的第三行行首:/world/+3在第三行行首添加注释符号//到第八行::3,8s/^/\/\//注意这里使用了行首符^和转义符'\',如:%g/^\sxyz/normaldd的该命令的作用是全局匹配一个空格后跟xyz,在普通模式下执行命令dd比如匹配6个以上的小写字母:/\a\{6,}比如交换冒号:两边的字符串::s/\(.*\):\(.*\)/\2:\1/#注意如何引用之前匹配的组,比如改变alltag,tog和tugtohat,hot和hut:%s/t\([aou]\)g/h\1t/g比如匹配hello或者world两个词:/\\|\这里只是用到的一些正则表达式通过vim,更多关于正则表达式的内容,后面的文章中也会有说明和例子。vim编辑器非常强大,这里只介绍一些主要的使用方法。Vim还可以使用视图模式、编辑多个文本、设置键盘映射、多个剪贴板、录制宏、使用插件等等。完全可以将vim用作IDE。但相对来说,vim的学习曲线比较陡峭,不同的应用场景需要记忆的命令和方法的数量完全不同。建议您在学习过程中每次只熟悉几个命令,一段时间后,您就能流畅快速地编辑文本。