涨姿势:分享12个由老外收集的Vim运用技巧
整理分享涨姿势:分享12个由老外收集的Vim运用技巧 ,希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:,内容如对您有帮助,希望把内容链接给更多的朋友!
1.重复上一条Ex命令,在Vim中有3种命令行模式提示:Ex命令提示符::something查找提示符Searchprompt:/something表达式提示符Expressionprompt:(在*模式下输入=):=1+1 假如我们从Ex命令提示符中运行一个spec: :!rspecspec/models/code_spec.rb 我们可以通过在普通模式下输入@:来重复上一条Ex命令。 2.在CSS中对属性进行排序 如果我们需要按照字母表顺序对CSS选择器中的行进行排序,只需在可视模式下选择选中的行并输入:sort,然后就可以对它们进行排序。 h4{ 3.选择*和粘贴的文本 我们可以运用gv来选择原始的需要*的文本,运用gb选择上一次粘贴的文本。gb是一个自定义的映射,可将其添加到vimrc文件,而且该命令在进行提取方式重构、剪切时十分有用。我们还需要修复缩进,运用gb可以轻易选择粘贴的文本,然后运用<或>来进行修复。 "selectlastpasteinvisualmodennoremapgb'`['.strpart(getregtype(),0,1).'`]'4.在*模式下粘贴文本 假如处于*模式中,并希望在不退出*模式的情况下粘贴已*的文本。可通过运用0实现这个需要。如果*的文本包含新的行字符,0会处理缩进的问题。5.在*模式下删除 如果需要在*模式、Vim命令行模式或Shell命令行中删除字符、单词或行,有以下的快捷方式:"deletebackonecharacter(backspace)"deletebackoneword"deletebacktostartofline"deleteforwardtoendofline6.在某个范围内运行普通模式命令 下面的JavaScript代码全都忘记加上;分号了: varelement=$(this)vartabName=element.data('tab')varreport=element.data('report') 我们可以选择所有三行代码,然后运行命令:normalA;,它将为每行执行A;(追加;)的命令。或者,我们可以在文件的整个内容上运用:%normalA;以达到相同的效果。7.在多行代码中重复上一次更改 如果我们在上述代码段的第一行进行了一次修改,运用A;在行的结尾处*;,如果需要再为2-3行添加;,应该怎样*作?可以通过选择第2-3行,并通过在可视化模式下运用dot(“.”)命令:'<,'>normal.来重复该命令。8.在多个文件中进行替换*作 Vim中,在多个文件里面不能直接进行替换*作。要在多个文件中进行查找和替换,首先需要创建一个文件列表,我们将在其中执行一条命令。通过运用:args命令来实现这个需要。例如,加载所有以”ext”字符串开头的JavaScript文件: :argsapp/assets/javascripts/ext*.js 这样可以看到通过运行:args命令得到的参数列表加载的文件。准备好参数列表后,可以执行查找和替换*作: :argdo%s/From/To/g 一旦在文件中进行了更改,我们可以运用以下命令保存参数列表中所有的文件: :argdoupdate 9.在多个文件中进行查找和替换 如果我们知道*作的文件需要在哪里运行替换命令,那么上一个技巧可以正常工作。但是大多数时候,我们需要搜索文件中的文本,然后只在这些文件中运行替换命令。此时,我们可以通过运用vimgrep命令在文件查找匹配。vimgrep命令可创建快速列表,其中包含与模式匹配的文件,该列表可通过:copen命令来打开查看。如果我们希望快速列表有用,需要运用vimrc文件中的:Qargs映射来将其转换为参数列表: command!-nargs=0-barQargsexecute'args'QuickfixFilenames()"populatetheargumentlistwitheachofthefilesnamedinthequickfixlistfunction!QuickfixFileNames()letbuffer_numbers={}forquickfix_itemingetqflist()letbuffer_numbers[quickfix_item['bufnr']]=bufname(quickfix_item['bufnr'])endforreturnjoin(map(values(buffer_numbers),'fnameescape(v:val)'))endfunction 最后,这里有一个需要在文件运行查找和替换的例子: :vimgrep/CurrencyNumberHelper/app/models/*.rb:Qargs:argdo%s/CurrencyNumberHelper/CurrencyHelper/g:argdoupdate 在评论中,buztard提到一个更简单的方式是运用ack-grep来创建参数: :args`ack-grep-lCurrencyNumberHelper`#or,ifyou'reusingAckplugin,thenjust:AckCurrencyNumberHelper:argdo%s/CurrencyNumberHelper/CurrencyHelper/g:argdoupdate ThiagoA.也在评论中提到,如果你运用较新的Vim版本,这将会更简单,可简单地运用cdo和cfdo来完成这个需要: :AckCurrencyNumberHelper:cfdos/CurrencyNumberHelper/CurrencyHelper/g|update.编辑已录制的宏 在录制宏的时候,很容易犯错误。当发生这种情况时,编辑已经录制好的宏比重新录制更容易。 假设我们已经在寄存器a中录制了新的宏。可以运用:puta在当前的缓冲区中打印宏的内容,并在Vim中对宏进行编辑。一旦宏被修改,我们可以选择它然后运用"ay将它*到寄存器。这样,我们就可以运用@a从寄存器中执行新的宏。.在多个文件中执行宏 我们已经录制好了一个宏,并且希望在多个文件中运行它。首先我们需要运用文件构建一个参数列表,例如,从一个Rails使用中加载所有模型: :argsapp/models/*.rb 然后运用下面的命令运行宏(记录在寄存器a中): :argdonormal@a 最后,运用下面的命令保存所有的缓冲: :argdoupdate.命令行中的Vi模式 Bashshell提供了两种模式用于命令行编辑:emacs和vi。默认情况下是Emacs编辑模式,可以运用以下方式将其更改为vi模式: set-ovi 在命令行中,可以按下ESC键进入vi编辑模式,并运用vi的单行编辑功能。在命令行中的vi编辑模式下,可以通过按下v弹出编辑器,这样就可以编辑和保存将在命令行中执行的缓冲。 如果需要回到emacs模式,输入: set-oemacs