您使用什么Vim功能?[关闭]


13

我几乎整天都在Vim中编程,并且我相信你们中的很多人也会这样做。您使用哪些功能可以使您的日常编码变得更好?我使用的是gv,它将让您重新选择先前选择的文本。非常适合缩进!


1
出于历史目的,这是原始SO问题的链接: stackoverflow.com/questions/95072/…–
Jax

请注意以下我的评论,您甚至不必键入gv。:)
内森·朗

Answers:


9

:%s / x / y / g

此命令用y替换当前文件中x的所有实例。这基本上是一个查找和替换,我却用它所以经常因为我已经在工作中学会了它,它已成为非常宝贵的。

另外,/ 搜索字符串

然后n导航文件中搜索字符串的所有实例。非常适合更轻松地进行手动调整,尤其是当您无法将规则应用于整个文件时。


我实际上是在工作时转换我们代码库中比较大的部分,而我完全使用vim正则表达式来完成它(到目前为止)。它真的很好!
Frew Schmidt

在其末尾添加“ c”以使该命令具有交互性。例如:%s / x / y / gc
sml 2010年

1
请注意,在%哪里进行替换- %表示“当前文件”。如果您在视觉上突出显示某些行并键入:s,则可以仅在该选择中进行替换。
内森·朗

7

== 在当前行上很好地自动缩进。

不过,通常情况下,我会用=一个动作=G来缩进文件的末尾,或者=i}缩进当前花括号内。


2
另外请记住>>和<<,它们可以手动进行缩排。
Frew Schmidt

@Frew-是的。此外,如果添加vmap <Tab> >gvvmap <S-Tab> <gv你的.vimrc,你可以缩进并分别Tab和Shift-Tab键,取消缩进,它会右后卫的视觉选择模式,因此您可以缩进或取消缩进进一步。
内森·朗

6

=% 用于自动缩进代码块中的所有内容。


哦!这对我来说是新的!
Frew Schmidt

如果您的光标位于开始处,那将起作用{。如果您位于块内,则可以执行=i{“缩进花括号内”。
内森·朗

5

*在命令模式下使用以搜索光标下的单词。


1
并且不要忘记它是姐妹命令#,它执行相同的操作,但是后退而不是前进!
Frew Schmidt

5

:!命令-宝贵的ls荷兰国际集团,而“须藤发球”的把戏。

我被要求解释开球技巧。基本上,即使您没有以root用户身份启动VIM,它也允许您使用管理员权限保存文本文件:

:w !sudo tee %

您可能想在这里解释“ sudo tee”技巧:-)在突出显示变量定义和诸如此类之后,我也喜欢:: sort。
Frew Schmidt

您真的可以使用:!将Vim变成一个出色的“可编写脚本”的编辑器!和一些shell / Python / Perl /其他脚本。
乔纳斯(Jonas)2009年

实际上!ls,我有一个替代方法,它运行vnew,将输出输出r!ls到新缓冲区中,然后将其水平缩小。我不介意记住目录中包含三个以上文件的所有文件;)
new123456

4
.

击中。键重复上一个命令。非常适合(例如)编辑.ini或。


这功能出奇的强大,但是要真正使用它,还需要花费一些时间。
亚伦


2

我一直使用gq重新做电子邮件,文本文件等上的换行符。在回复电子邮件(我使用pine)和编辑多个先前的回复时非常有用。


噢,我完全忘记了!
Frew Schmidt

为什么,为什么呢,更受欢迎的电子邮件客户端不能支持类似的功能?
erichui

最近,我使用gw而不是gq,因为它保持了光标位置
SergioAraujo

2

从哪里开始...这是我在过去5分钟左右使用过的东西。

  • 书呆子树 -文件浏览。使VIM更像一个IDE。
    • 对我来说,一件大事是能够cd建立目录,然后通过我的shell映射(如下所示)进入shell提示。
  • ci 清空任何卡在中间的东西。
  • :! 用于启动标准应用程序。
    • 我有用于启动shell提示,mysql客户端,apache日志文件等的映射。
    • Subversion集成总是很好。Quick diffs,stats等
  • :abbr 使大型块的重复键入消失。
  • 标签。需要我多说?
  • 拆分文件,总是很好。 :Sex总是很好。
  • :set paste! 避免自动缩进运行amok。

除了abbr,我都使用所有这些。我倾向于制作比缩写更多的宏。
Frew Schmidt


1

在编写或遍历C / Tcl / Perl代码时,我会大量使用以下命令:

复制粘贴代码

CTRL-f以及CTRL-b用于页面向前和向后遍历
%的逐块遍历
^ goto行的开始
$ goto行的末尾

开始使用命令v(可视模式)和上面的任何遍历键选择代码
y以复制
p粘贴

s 删除字符并转到插入模式以键入新文本。

代码级别遍历(需要编码样式规范)

]]用于启动下一个功能
[[用于启动上一个功能

CTRL-] 如果有标签,则跳转到变量/函数/宏的定义。

搜索

* =>正向
# 搜索词(或使用v选择的文本)
n => 向后搜索词(或使用v选择的文本)=>正向
N 执行先前的搜索命令=>向后执行先前的搜索命令

以上所有命令都可以在前面加上一个数字,以表示执行该命令的次数。随着人们越来越多地使用vim并挑战自我改进,这一附加维度的力量的实现慢慢地来了。


啊,]]和[[对我来说是新的。这很酷!
Frew Schmidt,


0

我以前是TextPad的用户,并且记住了该程序的许多加速键。我在Vim中所做的第一件事就是学习地图功能以保持一致性(F5搜索,F8替换等)。我创建了自己的个人配色方案,并从其他人的vimrc文件中借了很多东西。万岁!可任意配置。

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.