问题标签 [vim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
5252 浏览

visual-studio - 在文本编辑器中删除代码行

编辑:这个问题被标记为“托尔斯泰”,以感谢我写作的质量和长度:) 只需阅读第一段和最后一段就足够了:) 如果你倾向于用鼠标选择和移动代码,那么里面的东西中间对你来说可能很有趣。

这个问题是关于你一般如何使用文本编辑器的。我正在寻找删除多行代码的最佳方法(无意为其申请专利:)这延伸到转置行,即在其他地方删除和添加它们。最重要的是,我不想创建任何必须单独删除的空行。有点像 Visual Studio 的 SHIFT+DELETE 功能,但同时适用于多行。

假设您想从以下代码中删除第 3 行(制表符和换行符也可视化)。天真的方法是选择尖括号之间的文本:

然后按退格键。这将创建一个空行。再按两次退格键删除 \t 和 \n。

你最终得到:

当您尝试选择整行时,Visual Studio 不允许您选择尾随换行符。例如,将光标放在一行上并按 SHIFT+END 不会选择末尾的换行符。如果您使用鼠标也不会选择换行符,即单击一行的中间并将光标一直拖到右侧。如果您做出的选择至少跨越两行,您只选择尾随的换行符。我使用的大多数编辑器都是这样做的;Microsoft 写字板和 Word 是反例(我在删除文本时经常会出现换行错误;至少 Word 有一种方法可以显式显示行尾和段尾字符)。

通常在使用 Visual Studio 和其他编辑器时,这是目前最适合我的解决方案:

使用鼠标,我选择放在尖括号之间的字符:

现在按退格键,您可以一次性删除该行,而无需删除任何其他字符。这同时适用于几条连续的线。此外,它还可用于转置行。您可以将尖括号之间的选择拖动到用插入符号标记的点:

这给你留下了:

其中第 3 行和第 4 行交换了位置。

这个主题有一些变化。当您要删除第 3 行时,您还可以选择以下字符:

事实上,如果你告诉它选择一整行,这就是 Visual Studio 所做的。您可以通过单击代码与指示断点的红色圆圈所在的列之间的边距来执行此操作。鼠标指针在该区域镜像以更好地区分它,但我认为它太窄并且与我要选择的代码相距太远。

也许这种方法对其他人也很有用,即使它只是让他们知道在选择/删除文本时如何处理换行符:) 它适用于大多数非专业文本编辑器。但是,鉴于 Visual Studio 的大量功能和插件(我使用最多),我确信有更好的方法来使用它来删除和移动代码行。在不同块之间移动代码时自动获得正确的缩进会很好(即不点击“格式化文档/选择”)。我期待着建议;请不要对微优化大喊大叫:)


答案摘要

关于 Visual Studio:用光标键很好地导航。

最适合我浏览和编辑代码风格的解决方案是Eclipse方式:

您可以选择几行连续的代码,其中第一行和最后一行可能只被部分选择。按下 ALT+{up,down} 可以上下移动整行(不仅仅是选择),同时修正缩进。按 CTRL+D 将完全删除行(不仅仅是选择),而不会留下任何不需要的空行。我很想在 Visual Studio 中看到这个!

0 投票
7 回答
15358 浏览

vim - 更智能的 Vim 恢复?

当先前的 Vim 会话崩溃时,您会看到“交换文件...已经存在!” 对于上一个会话中打开的每个文件。

你能让这个 Vim 恢复提示更智能吗?(不关闭恢复!)具体来说,我在考虑:

  • 如果交换的版本不包含未保存的更改并且编辑过程不再运行,你可以让 Vim 自动删除交换文件吗?
  • 您是否可以自动执行建议的过程,即以新名称保存恢复的文件,将其与磁盘上的文件合并,然后删除旧的交换文件,从而需要最少的交互?特别是当swap版本和磁盘版本相同时,一切都应该是自动的。

我发现了SwapExists自动命令,但我不知道它是否可以帮助完成这些任务。

0 投票
2 回答
2071 浏览

vim - Screen + vim causes shift-enter to insert 'M' and a newline

When running a vim instance in gnu screen hitting shift enter in insert mode adds an 'M' and then a newline, rather than just a newline.

Does anybody know what the problem might be, or where to look?

Relevant system info:

Ubuntu 8.04.1

Screen version 4.00.03 (FAU) 23-Oct-06

VIM - Vi IMproved 7.1 (2007 May 12, compiled Jan 31 2008 12:20:21) Included patches: 1-138

Konsole 1.6.6 (Using KDE 3.5.10)

Thanks to the comments. When checking the value of $TERM I noticed that it was xterm (as expected), but within screen $TERM was set to screen-bce. Setting TERM=xterm after launching screen resolves this issue.

Adding the following to ~/.screenrc solved the problem without having to do anything manually:

term xterm

0 投票
7 回答
118194 浏览

python - 如何正确设置 Vim 自动缩进以编辑 Python 文件?

我无法设置 Vim (7.1.xxx) 来编辑 Python 文件 (*.py)。缩进似乎被破坏了(最佳 4 个空格)。我遵循了一些通过 Google 找到的教程。仍然没有效果:/请帮助。

0 投票
5 回答
7565 浏览

vim - 除了 Windows 上的 C/C++ 之外,还有其他语言的 CScope 样式的源浏览器吗?

我对可以插入 Vim 以允许 CScope 风格的源代码浏览(1-2 个击键命令来定位函数定义、调用者、全局符号等)的工具特别感兴趣,这些工具适用于 C/C++ 之外的语言,例如 Java 和 C# (因为 Vim 和 Cscope 已经很好地集成以浏览 C/C++)。我对基于 IDE 的工具不感兴趣,因为我知道 Microsoft 和其他供应商已经解决了这个问题——我更喜欢使用 Vim 进行编辑和浏览,但不知道有哪些 C# 和/或 Java 工具能给我与 CScope 相同的功能。

这个问题的原始答案包括一个指向 CSWrapper 应用程序的指针,它显然修复了一些用户在集成 Vim 和 CScope 时遇到的错误。但是,我的 Vim/CScope 安装工作正常;我只是想扩展功能以允许使用 Vim 编辑其他语言的代码。

0 投票
7 回答
9098 浏览

vim - 如何在windows下增加vim(CTRL-A不起作用......)

虽然CtrlX在 windows 下的 vim 中工作正常,但CtrlA选择所有(duh)。

有没有办法在windows下通过按键来增加一个数字?

0 投票
5 回答
6426 浏览

windows - Windows 和 gvim 中的多个选项卡

我正在尝试获取Edit with Vim上下文菜单以在先前打开的 Gvim 实例(如果有)的新选项卡中打开文件。

目前,使用Regedit我已经修改了这个键:

注册表项类型是REG_SZ.

这几乎可以工作......目前它在新选项卡中打开文件,但它也打开另一个选项卡(这是活动选项卡),该选项卡被标记\W\S\--literal并且文件似乎正在尝试打开以下文件。

我认为问题出在"%*"- 我尝试将其更改为,"%1"但如果我这样做,我会得到一个名为%1.

受影响的版本

  • Vim 7.2 版(在 7.1 上的行为相同)
  • Windows Vista 家庭高级版

谢谢你的帮助。

大卫。

0 投票
36 回答
6897 浏览

vim - Vim / vi 生存指南

什么是基本的 vim 命令?新用户需要知道什么才能避免陷入麻烦?请每条评论一条命令。

0 投票
6 回答
89334 浏览

vim - vim 中的制表符和空格

当自动缩进打开时,如何防止vim用制表符替换空格?

一个例子:如果我在行的开头有两个制表符和 7 个空格tabstop=3,并且我按 Enter 键,下一行的开头有四个制表符和 1 个空格,但我不希望这样......

0 投票
6 回答
36647 浏览

vim - 在不标记缓冲区更改的情况下计算 Vim 中的出现次数

为了知道当前缓冲区中存在多少次模式,我这样做:

它给出了模式的出现次数,但显然很麻烦,并且还具有设置“已更改”状态的副作用。

有没有更优雅的计数方式?