Vi & Vim

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


4
如何保存窗口,拆分和缓冲区布局?
我在一个存储库中正在处理多项任务。我想创建用于处理它们的“工作区”。 一个“工作区”或“缓冲区布局”将使我需要处理的所有文件都在我想要的布局中打开(使用^w+v,^w+s分割窗口)。 然后,当我开始执行另一项任务时,我想保存当前的布局,移至另一项,但是我希望能够恢复到以前的布局。 实现此目标的最佳方法是什么?


5
使用vim进行编程时,是否可以具有vim自动完成的函数名称,变量等?
许多IDE会根据用户类型自动完成函数名称,变量,方法名称等。最好的名称会根据语言的内置库以及同一程序的其他文件中已定义的名称来完成名称。 例如,当我输入以下Python程序时: hungy = True def eatFood(food): pass if hungry: eatF 该行将eatF自动显示eatFood()为可用的自动完成选项。 Vim有此功能吗?如果是这样,我如何启用它?

1
从Vim为乌干达的贫困儿童筹集了多少资金?[关闭]
正如:help iccf... 所说 Vim是慈善软件。您可以随意使用和复制它,但建议您为乌干达的贫困儿童捐款。请参见kcc下面的内容或访问ICCF网站,这些网址位于以下网址: http://iccf-holland.org/ http://www.vim.org/iccf/ http://www.iccf.nl/ 您也可以赞助Vim的开发。Vim赞助商可以对功能进行投票。请参阅sponsor。钱还是去了乌干达。 估计有多少票可以归功于Vim为乌干达筹集了多少钱? 我知道无法获得确切的数字,因为捐赠并不总是带有原因。上限/下限或数量级数字将起作用。
55 history-of 

3
列出已知的文件类型
如何获得vim当前知道的文件类型名称列表? 我希望能够做到这一点,以便在vim无法自动检测到文件类型时,我可以尝试一些vim知道的文件类型,这些文件类型可能相似,并查看它们是否提供合理的语法突出显示。 我知道处理文件类型的vimscript文件是按惯例放在ftplugin目录中的,但它们不一定是必需的(我不确定,但我不认为ftplugin目录中的vimscript文件是特殊的),所以我只想询问vim它知道什么文件类型,而不管它如何了解它们。

2
在不退出Vim的情况下关闭和卸载缓冲区
通常,我会将一些信息加载到临时缓冲区中,然后使用来关闭它:clo!。但这隐藏了缓冲区,而不是完全卸载它,即使我已经nohidden设置了。我觉得这很烦,因为我退出Vim时会得到关于我已经(认为我)已经丢弃的内容的额外确认。 我可以:q!改用它,但这是个坏习惯,因为如果只剩下一个缓冲区,它将完全退出Vim,这也很烦人。更糟糕的是,如果输入错误:qa!,我可能会失去很多工作。 有中间立场吗?我真的很想命令杀死当前缓冲区,但不退出Vim。我不反对用Vimscript编写它,但是如果命令已经存在,我宁愿避免使用它。

11
如何在Vim中查找和替换而不必键入原始单词?
我想优化Vim中的“查找和替换”工作流程。这是我经常做的事情,因为我敢肯定你们中大多数人也会这样做。通常- 复制块并在几个地方更改变量的名称。我知道,我知道,这可能会触发您“为什么要复制和粘贴代码”的反射,但我们不要走那条路了……有很多有效的用例:) 我非常了解搜索和替换命令::s或者,:%s但我不喜欢它们。它迫使我同时输入要搜索的完整变量名和要更改的变量名。也许有更好的方法来固定输入的数量:%s?我经常使用描述性长的变量名,因此对我来说确实是一个大问题。我也不喜欢从头开始输入变量名容易产生错字,并且会浪费时间和精力来查找错字。我更喜欢输入一次,然后复制和粘贴,以尽可能完全避免这种情况。 我当前的工作流程使用移动/拖动/选择/搜索/放置的某种组合来移动文件并一一替换。它虽然不是很好,但是具有避免输入完整的变量名的好处。我可能只需要输入前几个字母,/或者fx根据周围的情况使用另一个移动命令(例如),然后单击ve以选择整个单词。我也不介意必须为每个实例重复一次。如果没有确认每个更改,我永远不会做一个完整的替换。但是,如果我可以通过一次击键来重复替换操作(这种方法无法做到),那将是非常可取的。每次更换通常是这样的n,然后ve再p(或更糟"0p) 有没有更快的方法?

4
如何显示相对行号?
许多vim命令可以使用一个数字来表示该命令将要执行的行数。 是否可以显示相对于当前行的行号?类似于以下内容: 3: some text here 2: more text 1: This is the line above where the cursor is 0: The cursor is on this line 1: This is the line after the cursor 2: More text here

4
如何将gdb与Vim集成?
取而代之的gdbtui或ctrl+x在gdb其中显示了我想看到这在我的Vim编辑器将标签之间跳跃在屏幕上方的源代码,以及相应的缓冲区。 我怎样才能做到这一点?

2
如何获得vim停止在新行前添加评论?
我正在编辑.vimrc文件,并添加了评论。当我有这样的评论时: " example comment 完成注释后,在行末按回车,下一行将自动设置为注释(引号会自动插入): " example comment " 如何停止这种行为?


3
如何在特定列上设置标尺?
当使用不同语言进行编码时,我倾向于将行限制为特定长度(通常为79或80个字符)。 我已经在其他编辑器中通过使用标尺(在列上显示实线)或通过更改文本的颜色来表示已经完成了此操作。 当我一行接近或超过79个字符时,Vim如何指示我?

3
如何提取(复制)光标所在的单个字符?
我知道很多复制方法: yiw=在当前单词中 yaw拉动=在所有单词中拉动(包括尾随空格) yy =在当前行中 3yy拉动=从当前行开始拉动三行=在 yap所有段落中拉动(包括尾随换行符) 我还可以删除或更改单个字符: x=删除光标下方的字符 r=替换光标下方的字符 但是,您究竟如何在光标下简单地复制一个字符呢? 我的动机是我正在Perl 6中进行编程,其中一些运算符是Unicode字符。现在,例如,我正在使用tadzik的Perl 6 Config :: INI代码作为自定义解析器的起点,并且我希望从该行复制仅一个法语引号(一个超级运算符): my %hash = $<sections>».ast; 我可以使用hyper运算符的两个字符的“ Texas”版本>>,但是我认为它>»看起来比>>>: my %hash = $<sections>>>.ast;


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.