Vi & Vim

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

3
在vimtutor之后学习Vim
完成学习Vim的下一步应该是什么vimtutor?我已经在YouTube上观看了视频,在线阅读了教程以及关于SE的问题/答案,并且正忙于阅读《实用 Vim》。 还有其他可用资源吗?实际练习和使用Vim不仅是观看/阅读它,而且肯定是学习的一种好方法。关于使用内置帮助系统学习Vim的最佳方法有何建议? PS:尽管关于SO的这个问题已因话题不清而被关闭,但那里的一些答案似乎很有用。 PPS:很多年前,我使用vim,然后转到Ormac模式的Emacs,现在又回到vim :)

4
在正常模式下如何用拉动的单词替换单词
当我不得不用一个我以前想过的单词替换一个单词时,我通常使用对我来说似乎不自然的工作流程: 假设我有这段文字: foo bar buzz 我想拉动foo并替换bar为以前拉过的东西。 拉动之后foo,我看到以下选项: 选项1 将光标放在bar与w 把foo前面的bar有P 将光标放在b其余的上,bar然后用删除该单词de 选项2 将光标放在 w 使用de来擦除bar 将寄存器0的内容放入"0P(因为我已经擦除了bar,foo所以不再可以通过简单的来访问它p) 这两种方法对我来说似乎都过于复杂,我敢肯定有一种更有效的方法来完成此操作,但我找不到方法。这个想法是只将delete和put动作组合在一起,或者至少避免将已删除的单词保留在yank寄存器中,这样我就可以将所需的单词简单地放入p。 我也知道替换模式触发了,R但是它不允许放置被拉的东西。 TL; DR:如何用yank寄存器的内容替换单词?

2
Vim的语法突出显示将Java中的lambda(->)视为错误
我正在使用Vim在Java 8中编程,并且语法高亮出现了问题。 Java 8的一项新功能是lambda支持,从而创建了arrow运算符:->。Vim在* .java文件中不能将其识别为有效的运算符。因此,它以亮红色突出显示此运算符,以引起对“语法错误”的注意。(当然,这确实是有效的语法。) 有没有一种方法可以更新Vim允许的运算符的“词典”和/或修复语法突出显示以避免此问题? 前两行:version状态: VIM-Vi IMproved 7.4(2013年8月10日,2014年1月2日19:39:32编译) 包含的修补程序:1-52

6
我怎样才能真正在Vim中玩得开心?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Vi和Vim Stack Exchange 的主题。 3年前关闭。 我爱Vim。我一生都在用它:在工作中,我用Vim开发代码,用它编辑配置文件,用它写电子邮件。在家里,我用它写了我的待办事项清单和我的遗愿清单。有空的时候我会写一本书。我参加了有关Vim的聚会,并试图说服我认识的每个人使用它(不幸的是,我的祖母不同意她应该使用它来写信给她的朋友)。 带着对我们心爱的编辑的种种热爱,我面临着一个巨大的问题:作为一个正常构成的人,我有时想放松身心并享受乐趣。自然,我想在我们敬虔的编辑器中这样做,但我不知道该怎么做。当然,我花了几个小时自定义我的配色方案并编写了我长时间观看的递归宏,但是连续六,七个小时后,它就不再那么有趣了。 因此,我打电话给您,Vimmers同学:我如何在Vim中玩乐? 编辑这篇文章显然是4月的傻瓜(当然,我的祖母喜欢使用Vim)。谢谢大家的回答和评论,提出了一些非常酷的想法!
25 vimscript 

7
移动文本块的更快方法
这是我通常复制一段文本或代码的方式: 用可视模式(V)选择块,然后用删除 d; 或者,如果仅是一行,则使用 dd。 转到我想要的文字是,我太傻记住的区别p和P,所以我得到的时间的50%这一权利。(如果我弄错了:请重试一次)。 有时,缩进需要调整,因此我V再次进入可视模式 并重新选择相同的块,然后使用>或 <修复它。 有没有更简单的方法?在某些编辑器中,我看到您可以“拾取”一段文本,然后四处移动;这是Emacs的示例(但我在其他编辑器中也看到了此示例): 也许还有另一种(甚至更好)的方法?

1
静默调用Vim函数
我写了一个Vim小函数,将光标移动到当前行的第一个字符。如果光标已经在第一个字符上,则将光标移到第一列。 " Jump to first character or column noremap H :call FirstCharOrFirstCol()<cr> :function! FirstCharOrFirstCol() : let current_col = virtcol('.') : normal ^ : let first_char = virtcol('.') : if current_col == first_char : normal 0 : endif :endfunction 如何静默调用此函数?我宁愿':call FirstCharOrFirstCol()'不在状态行中显示。仅仅更改为noremap H :silent call…似乎还不够。
25 vimscript 

4
vim代码片段插件之间有什么区别?
vim有很多片段插件:ultisnips,snipmate,xptemplate,neosnippet等。 它们都有优点和缺点以及或多或少的依赖性。到目前为止,我一直在使用ultisnips,但从未对其完全满意。 由于我们对插件管理器有一个非常有趣且完整的问题,我认为对片段插件进行相同的解释将非常有用。 有一个上市这里可能是一个良好的开端,但一些完整,清晰,precises答案为我们的社会能写会非常有用。

5
Vim和VI之间的最大差异
今天,我决定尝试使用Vi代替Vim,我想看看它有什么不同。我一点也没有注意到任何差异,我注意到的最大的变化是,-- INSERT --当我进入插入模式时,Vi没有说什么,而且接口之间也有一些细微的差异。 这让我想知道,Vi和Vim之间最大的区别是什么?

1
如何在JSON文件中折叠文本?
我有一个很大的JSON文件。一次处理所有文件并不容易。我想折叠一些内容,以便可以处理JSON文件的一部分。 例如: { obj: {+}, // folded section obj:{ // unfolded section } } 是否可以在Vim中折叠JSON结构?
25 gvim  folding 

1
禁用<Esc>,但保持<C-[>
要从插入模式切回,我习惯了&lt;Esc&gt;。现在,我希望重新训练自己&lt;C-[&gt;而不是 &lt;Esc&gt;。为此,我需要禁用&lt;Esc&gt;以帮助进行再培训。 问题是 :inoremap &lt;Esc&gt; &lt;Nop&gt; 也禁用&lt;C-[&gt;。对于vim来说,它们似乎是同一回事。 有什么方法可以禁用一个没有另一个?

4
没有Ctrl-W的情况下如何在Vim中使用拆分?
我的终端不允许我输入Ctrl+ W,因为这是关闭终端标签的快捷方式。 我喜欢使用拆分,但是如果不使用,我将找不到任何方法C-W。这迫使我使用的标签,因为我可以在它们之间进行切换使用gt,gT或#gt其中#是一个数字,但我觉得这不是分裂不太方便,我只能看到一个文件的内容在同一时间。 我无法使用mouse=a任何一个,因为我的终端不支持该功能。 在没有Ctrl+ W组合的情况下,如何在Vim中使用拆分?

6
如何颠倒线的顺序?
如何反转行的顺序,使第一行显示在末尾,最后一行显示在前?(可能是缓冲区中的所有行,地址范围或逐行可视模式选择。) 我想改变 rat ox tiger ⋮ dog pig 进入 pig dog ⋮ tiger ox rat 无需借助外部命令如tac。

1
如何非交互地编辑文件(例如在管道中)?
我想以非交互方式使用vim编辑在管道输入中传递的文件,或就地编辑文件(类似于sed)。 很少使用sed以下示例: $ sed -i'.bak' s/foo/test/g file # Edit file in-place. $ cat file | sed s/foo/test/g # Parse file in pipeline. 但是我可以在这里读到: sed是S tream ED管理员,不是文件编辑器。但是,各地的人们都倾向于滥用它来尝试编辑文件。它不编辑文件。 其次,一些选项,例如就地编辑(-i)是可移植的。 在vim中如何实现相同的功能?

5
仅撤消窗口
考虑一个窗口中有多个拆分的情况。vim允许通过迅速“最大化”当前拆分以占据整个窗口&lt;C-W&gt; o。 有没有办法让vim“记住”以前存在的拆分并在执行后恢复到该状态&lt;C-W&gt; o? 编辑:澄清一下,我正在寻找一种无需使用任何第三方插件即可完成此操作的方法。
24 split 


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.