Vi & Vim

使用vi和Vim系列文本编辑器的人员的问答

3
如何对每次出现的单词应用一组击键?
如果我想删除每个单词,那很容易,因为我会做这样的事情: :s%/WORD//g 但是,如果我想对xyz每次出现的“ WORD”都该怎么办?例如,假设我要删除包含“ WORD”的每一行。我可以想到几种方法来执行此操作,但是似乎没有一种方法是理想的。 1) /WORD 然后手动按ddnddnddnddn...直到不再出现。但是,如果有很多行可以执行此操作,则将很耗时。 2) qd/WORD<enter>ddq 然后猜测出现WORD的次数,然后,例如: 500@d 但这将要么A)丢失一堆线,要么B)删除一堆多余的线。 有一个更好的方法吗?
13 search  macro 

6
删除所有连续的重复项
我有一个看起来像这样的文件。 Move to 230.00 Hold Hold Hold Hold Hold Hold Move to 00.00 Hold Hold Hold Hold Hold FooBar Hold Spam Hold 我希望它看起来像这样: Move to 230.00 Hold Move to 00.00 Hold FooBar Hold Spam Hold 我敢肯定,vim必须有一种方法可以快速地做到这一点,但是我不太清楚如何做。这是否超出了宏的功能,并且需要vimscript? 另外,如果必须将相同的宏应用于“ Holds”的每个块,也可以。它不必是一个宏即可获取整个文件,尽管那真是太棒了。


3
如何确定Linux发行版上是否安装了Vi或Vim?
我使用默认安装(bash,Konsole)的Kubuntu 14.04。我想学习一个功能强大的全键盘文本编辑器,并选择以下一种:Vi,Vim,Emacs(并且我将学习Nano,因为它很简单)。我对命令行有一些经验:Bash和Python,所以我准备在不使用Windows系统的情况下使用Linux时增加另一项技能。 在Bash中,键入vim或emacs提示我安装软件包。 打字的vi作品。它运行一个编辑器,所以我认为它一定是Vi。 但闪屏,如果你击称呼它,说VIM Vi Improved和它的Running in Vi compatible mode。所以现在我想一定是Vim。 那是什么?为什么输入vimbash不能运行我的编辑器?


1
在替代命令中用感叹号(!)替换斜杠(/)是什么意思?
我最近看到了一个替代命令,其中的作者被这样的命令/替代!::s!abc!ABC!g 我试图找到有关此用法的一些文档,但找不到任何相关内容。因此,我尝试自己进行实验,但我再也无法弄清两个标志之间的真正区别。这是我发现的: 这不是可以混合!和/中的命令。例如:s!abc/ABC失败。 !用来避免/在模式中转义可能会很有用。例如,如果要替换为</,%可以使用:%s!</!%!g代替:%s/<\//%/g。 似乎在某些情况下某些正则表达式无法使用/且不能正常使用,!但是由于我不是真正的正则表达式专家,因此我不确定。 所以我的问题很简单:!在替代命令中使用的优势是什么?何时应该决定使用替代命令/?
13 substitute 

2
禁止vim自动命令的输出
我在vimrc中定义了一个自动命令: au BufWritePost * !./make.sh 该脚本make.sh将.tex文件编译3次,我不希望显示输出。 有没有办法抑制输出? 我试图silent在au命令前添加一行,但是没有用。我也尝试过这种方法,但没有成功。
13 autocmd 

1
为什么MacVim在所有其他调用中都以不同的方式启动?
我注意到当我今天坐下来在MacBook上做一些工作时,最近在某个时候,我的.gvimrc设置被搞砸了:当我启动MacVim时,除了窗口很小(大约是默认大小)外,一切似乎都很正常。 )。很好奇,我尝试verbose set columns?告诉我“ 180,是〜/ .gvimrc中的最后一组”,即使窗口显然不是180列宽。set columns=180将窗口恢复到预期的宽度。 在对我的RC文件进行常规调试和对分后,我发现了一些异常。我不确定这是否与我的列大小不适用有关,无论哪种方式都很好奇,我无法弄清楚。 如果我运行:mvim -u NONE -c "set columns=100",我得到一个这样的窗口: 如果再次运行完全相同的命令,则会得到以下信息: verbose set co?分别报告100和66,在两种情况下都说“来自-c参数的最后一组”。重复启动命令会导致窗口状态改变。 我试过.viminfo两次跑步之间。它没有任何作用。 我现在正在使用MacVim快照74,尽管当我开始使用该版本时,我使用的是早期版本,并进行了升级以查看它是否只是版本控制。我使用的是10.10.3,此行为可能是由于特定于MacVim的错误所致,而该错误已由于操作系统更新而浮出水面(仅在最近才发生)。但是,如果我在妻子的笔记本电脑上安装MacVim(运行相同的OS版本),则该行为不会重现。 我很茫然。到底是什么导致了此行为? 编辑:继续调试后,我注意到,如果将外接显示器连接到笔记本电脑,似乎只能以这种方式重现。这使我相信这是某种错误。
13 macvim  startup 

2
自动突出显示相同的行文本
我前不久看到一个熟练的vim忍者这样做,但我不知道该如何开始。 A)有没有一种方法可以设置Vims背景色,使内容相同的连续行突出显示。 B)如果有人知道该怎么做,那么如果高亮显示在连续的行中而只考虑第一个单词(而不是整个行),则可以对它进行一个很好的调整。 如果高亮显示可以配置为不同的颜色,则根据匹配行数(或取决于AB的单词处于活动状态)使用第二个调整。因此,我们只有两个连续的行匹配,然后匹配绿色,连续3-5个行匹配橙色,然后再匹配6+个红色。

4
为什么此<Esc>普通模式映射会影响启动?
我在使用的普通模式映射时遇到一个奇怪的问题Esc。 如果escmapvimrc使用内容创建文件: set nocompatible set showcmd " Doesn't affect the problem: just makes it easier to see nnoremap &lt;Esc&gt; :noh&lt;CR&gt;&lt;esc&gt; 然后使用以下vimrc启动vim: vim --noplugin -u escmapvimrc 然后,vim将以操作员待定模式启动,c命令等待进一步输入,显示一个空文件,并且命令行显示:noh。 如果您删除该nnoremap行,那么问题就消失了。 如果您调试并逐步完成所有操作,则会得到以下输出: Entering Debug mode. Type "cont" to continue. /[...]/escmapvimrc line 1: set nocompatible &gt;s /[...]/escmapvimrc line 2: set showcmd " Doesn't affect the …

2
将vim折叠为一行,类似于Atom或Sublime Text
我喜欢Atom和Sublime Text处理行折叠的方式,其中每个折叠的第一行都是可见的(语法高亮显示完整),并且在该行的末尾附加了一个标记来指示折叠。 请参阅下面的屏幕快照,比较Vim的缩进折叠(顶部)与Atom的折叠(底部): Vim为每折指定两行。第一行用作标题,第二行描述有关折页的一些信息(折页内的行数和文本)。 Atom仅使用一行,并在该行的末尾使用一个小标记来指示折叠,并在左侧的行号中添加颜色。Atom的折叠样式使用的屏幕空间更少,但仍可以传达我真正需要的所有信息。 我偏爱Atom折叠样式。我认为,这看起来更干净,更一致,尤其是当连续列出多个方法或属性时(如上图所示)。 有没有办法大致估算Vim中Atom的折叠样式?
13 folding 

3
如何在Vim的quickfix窗口中列出缓冲区?
使用vim编辑器,一个常见的任务是浏览缓冲区。我现在使用标准命令,例如:ls或:bnext。实际上,我在.vimrc中设置了: "move amongs buffers with CTRL map &lt;C-J&gt; :bnext&lt;CR&gt; map &lt;C-K&gt; :bprev&lt;CR&gt; 我想以MRU插件实现的简单(优秀)方式在quickfix窗口中以列表形式浏览缓冲区。 是否有像MRU一样简单但作用于缓冲区的插件? 好的,可能的解决方案可能是使用:CtrlpBuffers命令,该命令是Ctrlp插件的一部分,但我不是Ctrlp的忠实拥护者,因为有时我不完全了解奇怪的行为(模糊模式选择...);所以我正在寻找一些真正简单的MRU插件。 顺便说一句,我开玩笑说:cexpr {expr},尝试用:buffers列表内容填充quickfix窗口,但是没有成功(可能是因为我的无知编程vimscripts) 有什么建议吗?
13 buffers  quickfix 


1
单词不完整
&lt;C-p&gt;并&lt;C-n&gt;允许填写当前文档中的单词。 我采取了一些笔记,写的发言权{0,1}^n和(E,D)多次。这些是由几个单词构成的单词。 有没有一种方法可以用&lt;C-p&gt;和&lt;C-n&gt;(或其他相关ins-completion命令)来完成WORD ?

2
Vim自动保存吗?
来自:help swap-file: 更新交换文件 在输入200个字符或四秒钟未输入任何内容后,交换文件将更新。仅在更改缓冲区时才会发生这种情况,而仅在四处移动时不会发生。之所以不能一直保持最新状态,是因为这会大大降低正常工作的速度。您可以使用“ updatecount”选项更改200个字符的计数。您可以使用“ updatetime”选项设置时间。时间以毫秒为单位。写入交换文件后,Vim将文件同步到磁盘。这需要一些时间,尤其是在繁忙的Unix系统上。如果您不希望这样做,可以将'swapsync'选项设置为空字符串。但是,失业的风险变得更大。在某些非Unix系统(MS-DOS,Amiga)上,根本不会写入交换文件。 从这个我有几个问题: 这是否意味着Vim会不时自动保存您的工作? “在写入交换文件之后,Vim将文件同步到磁盘。” 这是什么意思?这是指先将文件写入内存然后将其写入磁盘,还是其他内容? 假设我正在上课笔记:我写得很快,几乎不需要离开插入模式。但是很多时候我更改为“普通”只是为了保存工作。我需要这样做还是Vim确保即使不退出插入模式也保存了大部分工作?
13 save  swap-file  backup 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.