例如,要在当前行中搜索字符串 foo的第一个匹配项,并将其替换为 bar,则可以使用: :s/foo/bar/ 要替换当前行中所有出现的搜索模式,请添加g标志: :s/foo/bar/g 如果要搜索并替换整个文件中的所有匹配的模式...此字符表示从文件的第一行到最后一行的范围: :%s/foo/bar/g 如果省略{string}部分,则将其视为空字符串,并删除匹配的模式。...下面的命令将所有以 foo开头的行替换为 Vim is the best: :%s/^foo.*/Vim is the best/gc ^(脱字符)符号与行的开头匹配,....例如,要将从第3行到第10行的所有行中所有出现的 foo替换为 bar,你可以使用: :3,10s/foo/bar/g 该范围包括所有内容,这意味着该范围包括第一行和最后一行。...点.字符表示当前行,而$-美元符号表示最后一行。在从当前行到最后一行的所有行中替换 foo: :.,$s/foo/bar/ 还可使用 +或-符号来设置行说明符,其后是从前一个行号中添加或减去的数字。
vi编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。 vim是vi的增强版,比vi更容易使用。...: 命令模式—>输入模式 i:insert,在当前光标所在字符的前面,转为输入模式 I:大写的i,在当前光标所在行的行首转换为输入模式 a:append,在当前光标所在字符的后面转换为输入模式...//打开文件 vim +n filename //打开文件并定位到第n行 vim +/pattern filename //打开文件并定位到第一次被/pattern匹配到的内容行首...^:跳转到行首的第一个非空白字符 $:跳转到绝对行尾 行间跳转 gg:跳转到第一行 G:跳转到最后一行 #gg:跳转到第#行...pattern:从下往上查找匹配的内容 n:从上往下查找匹配到的内容的下一条 N:从下往上查找匹配到的内容的下一条 末行模式下查找并替换:s s命令只能在末行模式下使用 语法:ADDR1,ADDR2
这表示,你可以输入一个长词的一部分,然后按一下某个键,然后VIM就替你完成了这个长词的输入了。举个例子:你有一个变量名为 iAmALongAndAwkwardVarName 在你写的代码的某个地方。...如果VIM没有给出你想要的词,基本按,直到你满意为止,VIM会一直循环它找到的匹配的字符串。 聪明的进入插入模式 很多新手进入插入模式都只是用i。...比如,dw会剪切一个词而dfS会将从当前光标到下一个S之间的字符剪切至剪贴板。 y{motion}:和上面类似,不过是拷贝。 c{motion}:和d{motion}类似,不过最后进入插入模式。...C:和D类似,最后进入插入模式。 x:剪切当前字符到剪贴板。 s:和x类似,不过最后进入插入模式。 粘贴 粘贴很简单,按p。 使用多重剪贴板 很多编辑器都只提供了一个剪贴板。VIM有很多。...这表示前面一项可以被匹配一次或多次。 /ab\+ 匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。 要匹配一个可选项,用 “\=”。
大家好,又见面了,我是你们的朋友全栈君。 1、查找 /pattern :向下查找pattern匹配字符串 ?...pattern:向上查找pattern匹配字符串 使用了查找命令之后,使用如下两个键快速查找: n:按照同一方向继续查找 N:按照反方向查找 除此之外,pattern还可以使用一些特殊字符,包括(/...,其中前三个这两个是vi与vim通用的,“/”为转义字符。 在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。...E与Y是光标移动快捷键,参考: Vim中如何快速进行光标移 1、 : s/vivian/sky/ #替换当前行第一个 vivian 为 sky 2、 : s/vivian/sky/g #替换当前行所有...,表示从当前行开始到最后一行) 5、 :%s/vivian/sky/ #(等同于:1,$s/vivian/sky/ :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
【:next】切换至下一个文件 【:prev】切换至前一个文件 【:last】切换至最后一个文件 【:first】切换至第一个文件 4.2.3 vim的命令模式(编辑模式)常用快捷键 1)...b) 【^】光标移动到当前行首的第一个非空白字符 c) 【&】光标移动到当前行的行尾 6) 行间跳转(相当于上下跳转) a) 【G】跳转到最后一行(整个文档的最后一行...,一直到第一次被pat2匹配到的行结束 【:#,/pat/】从第#行开始,一直到第一次被pat匹配到的行结束 【:/pat/,$】从第一次被pat匹配到的行开始,一直到最后一行 地址界定后面可跟随的编辑命令...(注意:如果匹配结果是多行,只会删除最后一行) 【y】例如:【:/pat1/,/pat2/y】 表示,从光标位置开始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置直接...g】或者【s@a@Good@g】查找当前光标所在行的“a”字符,全部替换成“Good”字符 替换后: 例如:【s#/boot#/#i】将光标所在行的【/boot】替换成【/】,默认只会替换一个,匹配时会忽略大小写
F字符> -从光标位置到光标左边某个字符首次出现的位置,包括该字符 /正则表达式-从光标位置到下一个匹配正则表达式的位置(跨行) ?...正则表达式-从光标位置到上一个匹配正则表达式的位置(跨行) aw -一个单词加一个空格(a可理解为“一个”,下同) iw -一个单词(i可理解为in,下同) a" -一个字符串包括双引号 i" -一个字符串内部文本...用;或,在匹配间切换 t或T跳转到本行某个字符之前,小写t向右查找,大写T向左查找。用;或,在匹配间切换 /正则表达式跳转到下一个匹配。用n或N在匹配间切换。 ?正则表达式跳转到上一个匹配。...^p回车 16.一些在目前版本已知没有实现的一些常用Vim功能 (如果对Vim不熟悉可以跳过这节) a)let命令(没有let命令就无法导出/导入寄存器内容,也就是无法导入宏) b):g命令(在文本处理中很有用的一个命令...命令(执行shell命令) d)大部分正则表达式标记(例如\%V,\v等等) e)某些多键命令双击最后一个字符表示作用于当前行。
vim是一个向上兼容于vi的文本编辑器,可用于编辑各种纯文本。它对编辑程序特别有用。...#指定的个数的单词; 行首行尾跳转 ^:跳转至行首的第一个非空白字符; 0:跳转至行首; $:跳转至行尾; 行间跳转 G:跳转至由#指定的行; 1G, gg:第一行; G:最后一行; 句间跳转: ) 下一句...; cb:删除光标所在位置到当前单词或上一个单词单首的字符并且切换为输入模式; ce:删除光标所在位置到当前单词或下个单词词尾的字符并且切换为输入模式; cw:删除光标所在位置到下个单词词首的字符并且切换为输入模式...1,$:范围为第一行至最后一行 %:全文 /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行; /first/,$:从光标所在处起始,第一次由pat1匹配到的行开始,至最后一行中间的所有行...PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串; n:下一个,与命令方向相同; N:上一个,与命令方向相反; (3) 查找并替换 s:末行模式的命令; 使用格式:
Vim替换与批量修改 1 简单替换表达式 :%s/four/4/g “%” 范围前缀表示在所有行中执行替换。 最后的 “g” 标记表示替换行中的所有匹配点。...substitute” 命令的匹配模式是 “s+$”。这表示行末($)前的一个或者多个(+)空格(s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。...因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。 如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “(”,后面加 “)”。...这表示前面一项可以被匹配一次或多次。 /ab+ 匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。 要匹配一个可选项,用 “=”。...只是要替换字符与替换为字符要互换: 如, 取消C++源文件中的10~20行的注释,指令为: :10,20s/^//////g 取消Python源文件中的10~20行的注释,指令为
substitute 简介 substitute 允许我们先查找一段文本并用新的文本将匹配上的文本进行替换。它的使用比较复杂,需要提供一个匹配模式和一个替换的字符串。...手动选择是否需要替换 有的时候我们并不希望盲目的对所有内容进行替换,而只替换其中的部分内容。例如上述的文本中,我们只想替换第二行的最后一个 python 为vim。那么可以使用 c 标志。...有一个办法就是将上次的模式存储到寄存器中,在匹配的时候从寄存器中取数据填充 {pattern} 部分。 上次匹配成功之后如何将对应的模式放到寄存器呢,这里我们介绍一个新的内容——命令窗口。...这个时候我们会想有没有什么办法能让vim知道我只想将寄存器中的特殊符号作为普通字符串呢?当然是有办法的,我们可以借助vim script 来实现这一需求。...最后的总结 在这篇文章我着重讨论了 substitute 这个命令的使用,介绍了该命令对应的标志位,并通过一些例子演示了如何使用这些标志位。相信各位对替换命令有了一定的认识。
在当前光标所在行的行首输入; A:在当前光标所在行的行尾输入; O:在光标所在行的上一行打开一个新行,并转换为输入模式; 编辑模式 – – > 输入模式 输入模式 – – > 编辑模式...; (:跳转至上一个句子; 段落间移动: }:跳转至下一段 {:跳转至上一段 3. vim的编辑命令: 字符编辑: x:删除光标处的单个字符; #x:删除光标处起始的...#,+#:从左侧#表示的行开始,加上右侧#表示的行数; .当前行; $:最后一行; %:全文;相当于(1,$) /pat1/,/pat2/:表示从第一次被pat1匹配到的行开始...查找并替换 s/要查找的内容/替换为的内容/修饰符 查找替换中的分隔符/可替换为其它字符,例如: i:忽略大小写 g:全局替换;默认情况下,没一行只替换第一次出现的内容;...多文件模式 vim FILE1 FILE2 FILE3 … :next 切换至下一个文本 :prev 切换至前一个文本 :first 切换至前一个文本 :last 切换至最后一个文本
现在来看看Vim的多字符编码方式支持是如何工作的: 启动Vim,根据.vimrc文件中设置的encoding的值来设置buffer、菜单文本、消息文的字符编码方式。...其中fenc是当前文件的编码,也就是说,一个在vim里面已经正确显示了的文件(前提是你的系统环境跟你的enc设置匹配),你可以通过改变 fenc后再w来将此文件存成不同的编码。...这一趟下来,如果中间的某次解码从头到尾都没有出错,那么 vim就认为这个文件是这个编码的,不会再进行后面的尝试了。这个时候,fenc的值就会被设为vim最后采用的编码值,可以用:set fenc?...不管最后的文件是什么编码的,vim都会将其转换为当前系统编码来进行处理,这样才能在当前系统里面正确地显示出 来,因此enc就是干这个的。...最后再来说一下新建空文件的默认编码。看文档好像说会采用fencs里面的第一个编码作为新建文件的默认编码。
即使文件没有被修改也强制写入,并更新文件的修改时间。 x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。...四、Other 部分命令解释: % 全文(“%”是“1,$”范围的缩写) :g 代表在全文档范围内 ^代表行的开始 \s*代表空白字符 &代表行的结束 d代表删除 s 替 /搜索字符串开始 /搜索字符串结束.../g 替换字符串结束,g表示替换每一行的所有匹配结果。...n 查找下一个& (当在vim用//查找字符串的时候,字符串有多个的时候,按n,光标会跳到下一个字符串) :g/^\s*$/d 删除所有空白行 批量注释或取消注释文本 注释文本: 一般模式下按下Ctrl...+v,上下箭头选中每行,然后按大写I,插入#号,然后按两下ESC即可 取消注释: 一般模式下按Ctrl+v,然后上下箭头全内容(选每行的#),按下x即可 当用/查找字符串的时候,n为下一个字符串,N为上一个字符串
光标跳转: 字符间跳转: h,j,k,l h:左 l:右 k:上 j:下 #COMMAND:跳转由#指定的个数的字符; 单词间跳转: w:跳转至下一个单词或后一个单词的词首; e:跳转至当前或下一个单词的词尾...跳转至由#指定行; G:跳转至最后一行; 1G,gg:跳转至第一行; 句间移动: ):跳转至下一个句子; (:跳转至上一个句子; 段落间移动: }:跳转至下一段 {:跳转至上一段 3. vim的编辑命令...$:最后一行; %:全文;相当于(1,$) /pat1/,/pat2/:表示从第一次被pat1匹配到的行开始,一直到pat2匹配到的行结束 使用方式: 后跟一个编辑命令: d:删除指定范围的内容 y:复制指定范围的内容..."引用前面查找时查找到的整个内容; 修饰符: i:忽略大小写 g:全局替换;默认情况下,没一行只替换第一次出现的内容; 查找替换中的分隔符/可替换为其它字符,例如: s@@@ s### 六、vim的文件模式...多文件模式 vim FILE1 FILE2 FILE3 … :next 切换至下一个文本 :prev 切换至前一个文本 :first 切换至前一个文本 :last 切换至最后一个文本 :wall 保存所有
虽然本系列文章叫做从0开始配置vim,似乎我们从一开始就要写vimrc配置文件,但是我们并没有这么做。...我们先经过几篇文章了解了下面的几个内容 如何设置vim属性,从而改变vim的特征 配置快捷键,以提高我们的使用效率 使用自动命令,以便使用vim来自动化我们的相关操作 这些既有vimscript的东西...拥有这些基础知识之后,在阅读其他人写的配置或者自己配置将会变得更加容易。当然关于vim我们还有很多内容没有讲,例如该如何自定义命令,如何弹出一个窗口,以及到最后如何编写自己的插件。...vim.o.ruler = true -- 边输入边搜索 vim.o.incsearch = true -- 开启搜索匹配高亮 vim.o.hlsearch = true -- 搜索时自行判断是否需要忽略大小写...1000条 vim.o.history = 1000 -- 显示空白字符 vim.o.list = true -- 样式 vim.o.background = "dark" vim.o.termguicolors
猫头虎 分享已解决Bug:如何让 Vim 在单行内进行多次替换 在日常的文本编辑中,尤其是 Vim 用户们,偶尔会遇到一些看似简单却让人绞尽脑汁的问题。...今天猫头虎就来分享一个有意思的 Vim 问题:如何在单行内对重复出现的特定格式内容进行多次替换。 正文 问题描述 我们有一段文本,格式如下: ("xxx", "xxx", "xxx", ...)...,似乎所有匹配都替换成了相同的 p1,没有按预期逐次递增。这表明在单行内只执行了一次替换。 猫头虎的分析 经过仔细检查,Vim 的 g 命令和 s 命令在单行内的默认行为是每行只执行一次替换。...⚙️ 测试示例 在 Vim 中执行这段命令后,原始文本: ("xxx", "xxx", "xxx", "xxx") 将会成功转换为: (p1, p2, p3, p4) 技术细节拓展 \v:Vim 中的...“非常简洁模式”,它可以使模式语法更直观,减少转义字符的数量。
1,查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。...Vim查找支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"。...例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。 按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。...即foo bar和foobar中的foo均可被匹配到。 5,查找与替换 :s(substitute)命令用来查找和替换字符串。...^E与^Y是光标移动快捷键,参考: Vim中如何快速进行光标移 大小写敏感查找 在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。
上下左右移动:对应上下左右键 按照词移动:w(下一个词),b(单词的第一个字母),e(单词的最后一个字母),不适合中文 按照行移动:0(第一行),$(行尾),:+行数直接跳转到指定的行(此处的+意味着按下...键入 dd 删除当前行,并把删除的行存到剪贴板里。 键入 x 删除当前光标所在的一个字符。 键入 p 可用于粘贴上一次复制的内容。 键入 yy 可以复制当前行的内容。 键入 u 可用于撤销当前操作。...相信我,试玩之后,你会“哇”的。 妙,实在是妙。除此之外,你还可以键入: % 匹配括号来移动,包括 {[(,前提条件是你需要把光标移动到括号上。 * 匹配单词来向下一个移动。...(中文就无法使用了) # 匹配单词来向上一个移动。(同上) 记住光标的移动就可以脱离鼠标的束缚了。...原来一边编辑,一遍预览,在 Vim 下,只需要键入三四个字符! 04、结语 如果你想在手头备一份 Vim 的帮助手册,免得在用 Vim 的时候四处搜索,实话告诉你,我替你准备了,就是这么贴心。
> - 自动缩进范围内的文本 gU - 将范围内的字符转换为大写 gu - 将范围内的字符转换为小写 > - 将范围中的内容缩进一格 - 将范围中的内容取消缩进一格...,包括该字符 F字符> - 从光标位置到光标左边某个字符首次出现的位置,包括该字符 /正则表达式 - 从光标位置到下一个匹配正则表达式的位置(跨行) ?...用;或,在匹配间切换 t 或 T 跳转到本行某个字符之前,小写t向右查找,大写T向左查找。用;或,在匹配间切换 /正则表达式 跳转到下一个匹配。用n或N在匹配间切换。 ?...一些在目前版本已知没有实现的一些常用Vim功能 (如果对Vim不熟悉可以跳过这节) a)let命令 (没有let命令就无法导出/导入寄存器内容,也就是无法导入宏) b):g命令 (在文本处理中很有用的一个命令...命令 (执行shell命令) d)大部分正则表达式标记 (例如 \%V, \v 等等) e) 某些多键命令双击最后一个字符表示作用于当前行。
+#:打开文件后在第#号行首 +:打开文件后在最后一行 光标移动: 单字符移动: h:左 l:右 j:下 k:上 可以和数字组合 单词间移动: w:调至下一个单词的词首 b:当前或前一个的词首...e:当前或下一个词的词尾 行内移动: 0:绝对行首 ^:第一个非空白字符 $:绝对行尾 句子间移动: ):上一句 (: 下一句 段落间移动: }:上一段 {:下一段 行间移动:...#G:第几行 #gg G:最后一行 编辑操作: x:删除光标所在处的字符 #x:删除光标所在处向后的#个字符 r:替换光标所在处的字符 d:删除命令 结果光标跳转命令使用...的配置文件: 全局:/etc/vimrc 个人:~/.vimrc 查找替换: :地址定界s/查找模式/替换为的内容/gi g:全局替换 i:不区分大小写 :地址定界s@查找模式@替换为的内容...@gi &:用于在替换为的内容部分中引用前面匹配到的所有内容 find: 实时查找工具,通过遍历指定路径下的文件系统完成文件查找。
另外,你的 VIM 安装目录下很可能也带有一个默认的 vim rc 文件,你都可以参考。如果遇到没有见过的命令或者参数,可以自己看看 :help 。 * vimrc 4....比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字符. 匹配任意字符* 匹配前一字符大于等于零遍。...举一个复杂的例子,把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列 写法: :%s/abc/(.*/)xyz/xyz/1abc/g :%s//(abc/)/(.*/)/(...假如 VIM 向上搜索,找到以 f 开头的第一个匹配不是 filename,你可以继续按 搜索下一个匹配进行补全。...> 补全一个词,在当前文件中没有找到匹配,VIM 将搜索 #include 语句中的文件,而文件的位置将在 path 中搜索。
领取专属 10元无门槛券
手把手带您无忧上云