标签: vim

在Vim中交互式搜索/替换正则表达式?

我知道进行全局替换的正则表达式,

     %s/old/new/g
Run Code Online (Sandbox Code Playgroud)

你如何在Vim中进行交互式搜索替换?

regex vim

254
推荐指数
5
解决办法
7万
查看次数

关闭文件而不退出VIM应用程序?

我是VIM的新手.我使用:e:w命令编辑和编写一个非常方便的文件.我不确定是否有"关闭"命令关闭当前文件而不离开VIM?

我知道该:q命令可用于关闭文件,但如果它是最后一个文件,VIM也会关闭; 实际上在Mac OS上,MacVIM确实退出了.只关闭了VIM窗口,我可以使用Control-N再次打开一个空白的VIM.我希望VIM保持空白屏幕.

vim

253
推荐指数
6
解决办法
8万
查看次数

Vim中的自动完成

简而言之,我正在为Vim编辑器搜索一个有效的自动完成功能.我之前曾经说过,Vim完全取代了Linux下的IDE,虽然这确实是正确的,但它缺少一个重要特性:自动完成.

我知道Ctrl+ N,Exuberant Ctags集成,Taglist,cppcompleteOmniCppComplete.唉,这些都不符合我对"工作自动完成"的描述.

  • Ctrl+N如果你已经准备好如何拼写class,那就很好(只)while.那好吧.
  • Ctags为您提供了基本知识,但有许多缺点.
  • Taglist只是一个Ctags包装器,因此继承了它的大多数缺点(尽管它适用于列表声明).
  • cppcomplete根本没有按照承诺的方式工作,我无法弄清楚我做错了什么,或者它是否正确"工作"并且限制是设计的.
  • OmniCppComplete似乎与cppcomplete具有相同的问题,即自动完成无法正常工作.此外,该tags文件再次需要手动更新.

我知道即使是现代的,全面的IDE也不能提供良好的C++代码完成.这就是为什么我直到现在才接受Vim在这方面的不足.但我认为代码完成的基本级别并不是太多要求,实际上是生产性使用所必需的.所以我正在寻找能够完成以下任务的东西.

  • 语法意识.cppcomplete promises(但不会为我提供),正确,范围感知自动完成以下内容:

    variableName.abc
    variableName->abc
    typeName::abc
    
    Run Code Online (Sandbox Code Playgroud)

    而且,其他任何东西都是完全没用的.

  • 可配置性.我需要(轻松地)指定源文件的位置,以及脚本从中获取其自动完成信息的位置.事实上,我的目录中有一个Makefile,它指定了所需的包含路径.Eclipse可以解释其中的信息,为什么不是Vim脚本呢?

  • 最新的.一旦我在文件中更改了某些内容,我希望自动完成功能能够反映出这一点.我想要手动触发ctags(或一些类似).此外,更改应该是增量的,即当我只更改一个文件时,重新解析整个目录树(可能很大)是完全不可接受ctags.

我忘了什么吗?随意更新.

我对相当多的配置和/或修补很满意,但我不想从头开始编写解决方案,而且我不擅长调试Vim脚本.

最后一点,我真的很喜欢Java和C#类似的东西,但我想这太过于希望了:ctags只解析代码文件,Java和C#都有大量的预编译框架需要编制索引.不幸的是,在没有IDE的情况下开发.NET甚至比C++更像是PITA.

c++ ide vim autocomplete

249
推荐指数
4
解决办法
11万
查看次数

为什么\ raim的换行?

问题如何在Vim中替换换行符?.替换新行的文本时必须使用\ r,如下所示

:%s/%/\r/g
Run Code Online (Sandbox Code Playgroud)

但是当替换字符的行尾和换行符时,您可以这样做:

:%s/\n/%/g 
Run Code Online (Sandbox Code Playgroud)

手册的哪一部分记录了这些行为,以及它们背后的原因是什么?

vim

248
推荐指数
5
解决办法
5万
查看次数

247
推荐指数
8
解决办法
25万
查看次数

获取Vim中设置的当前值

有没有一种简单的方法可以找出指定Vim设置的当前值?如果我想知道tabstop我可以运行的当前值:

:set tabstop
Run Code Online (Sandbox Code Playgroud)

没有通过论证,Vim会告诉我当前的价值.这适用于许多设置,但对于那些无论是真还是假都没有好处.例如,如果我想找出当前的值expandtab,运行:

:set expandtab
Run Code Online (Sandbox Code Playgroud)

实际上会启用expandtab.我只是想知道它是否启用.

这样做我想要的:

:echo &l:expandtab
Run Code Online (Sandbox Code Playgroud)

但它似乎相当冗长.有更快的方法吗?

vim

247
推荐指数
4
解决办法
5万
查看次数

245
推荐指数
4
解决办法
8万
查看次数

如何在vim中停止换行

我喜欢长线显示在多个终端线上; 我不喜欢vim在我的实际文本中插入换行符.我应该改变.vimrc的哪一部分?

vim

242
推荐指数
8
解决办法
15万
查看次数

Vim:将光标移动到最后位置

是否可以在(g)Vim中将光标移动到其先前的位置(在正常模式下)?在先前光标位置列表中来回循环的东西将是理想的.但也只是切换到最后一个位置就足够了(类似于cd -bash与目录).

这是一个小小的示范:

line |1| <- cursor position
line 2
line 3
line 4
Run Code Online (Sandbox Code Playgroud)

假设我做了2j,现在是这样的:

line 1
line 2
line |3| <- cursor position
line 4
Run Code Online (Sandbox Code Playgroud)

现在我想按某些东西(除了2k显而易见的东西)回到第一个位置,也可能回到以前的位置.

vim

242
推荐指数
4
解决办法
7万
查看次数

如何在vim中自动格式化/缩进C代码?

当我从另一个文件复制代码时,格式化混乱,如下所示:

fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)

如何在vim中自动格式化此代码?

c vim code-formatting

239
推荐指数
8
解决办法
15万
查看次数