作为一名程序员,我在键盘上花了很多时间,而且在过去的12年里,我或多或少都在做。 如果有一些我从未习惯过的东西,那么由于一些最常见的代码编辑任务,我在编码过程中会遇到这些烦人且几乎无意识的持续微中断。 像从不同的行(或甚至同一行)进行简单的复制和粘贴,或者从当前位置向上或向下移动1或2行所需要的东西需要太多的输入或涉及使用箭头键......它会得到当我想进一步移动时更糟糕 - 我最终使用了鼠标。 现在想象一下这个场景,但是在笔记本电脑上
我一直都在考虑学习VIM,但掌握它所需的时间总是让我想退后一步。
我想听听那些已经学会了它的人,以及它最终成为你不能没有的东西之一。
在工作中,我使用VS2008,C#和R#,它们使编辑代码比以往更快更容易,但即便如此,我认为我可以享受不必使用鼠标。
甚至没有箭头键。
#1楼
是的,肯定会花时间学习至少一点'vi'和'vim'。 它旅行得很好。
当你面对一个没有安装功能的客户Unix / Linux / Mac系统时,你永远不会被困住。 即使在Windows上(如果你有安装功能),'Vim'也是免费且易于安装的。 (而不是将你的学习曲线完全投入到像UltraEdit这样的东西中,虽然一个优秀的编辑器可能永远都不适合你......)。
学习vi可以让你学习其他工具,比如'sed'和一般的正则表达式:通常可转移的东西。
此外,如果你想成为一个合适的极客,你只需要知道'vi / m'或者你看起来像一个骗子;-)
#2楼
我的工作迫使我拿起vim,很快成为第二天性。 现在我的抱怨是关于没有vim仿真或插件的IDE。 我注意到esc键已成为我在vim之外的敌人。
我确实在Visual Studio中为vi找到了几个模拟器:
http://code.google.com/p/vim-visual-studio/
#3楼
这绝对是值得的。
有一个显而易见的原因,任何使用Vi(m)
都会告诉你,另外两个人似乎从未提及过。
这是显而易见的:
-
vi
一下子无处不在且非常强大,通过学习一次,你就可以在几乎所有带键盘的电脑上运用这种能力。
这些是学习Vim
鲜为人知的原因:
它的努力程度不会超出您的预期。 通过Vim导师一次(在shell中使用
vimtutor
,或者在Windows中从“开始”菜单中的Vim文件夹中运行它),你已经很好地掌握了能力,而且从那里开始走下坡路。 我达到了可以在工作中使用Vim
的水平,而不会在不到一周的午餐时间内产生任何明显的生产力。这很有趣 ! 现在编辑文本对我来说就像一个游戏 。 我积极地享受它 - 当你想到它时,这非常荒谬。
还有两个不学习Vim
好理由:
它让人上瘾,你会发现自己希望你可以在你的所有计算中使用
Vim
命令,并在你不能的时候诅咒。 幸运的是,至少在某些情况下,有办法 让 周围 此 。再次,它会让人上瘾,虽然你不会因为实际使用
Vim
而失去任何生产力,但是你会花费数小时寻找好的技巧来让你的Vim
体验更好,并在Stack Overflow上阅读Vim标签 。
#4楼
经过vimtutor只花了我30分钟,这足以熟悉vim。 这值得每一秒。
#5楼
我已经使用vi和vim已经有20年了,我还在学习新东西。
David Rayner的最佳Vim Tips网站是一个很好的列表,虽然它对你熟悉vim后可能更有用。
我还想提一下ViEmu网站,它有一些关于vi / vim提示的很好的信息,特别是文章为什么,哦为什么,那些胡桃头使用vi? ( 存档版 )
#6楼
我已经使用vi / vim超过25年了。 如果你已经知道一些命令行编辑器,那么也许你不需要学习vi / vim。 但如果你不熟悉任何其他命令行编辑器,那么值得学习它。 只需很少的努力就可以很容易地在vi / vim中高效工作。
#7楼
我最近切换到VIM,我认为这是值得的。 如果你需要“完成任务”,你可以始终保持插入模式,其中vim(大多数情况下)就像普通的文本编辑器一样。
我注意到那些没有用来打扰我的东西,比如伸手去拿箭头键,现在感觉不对劲了。 它肯定减少了我的手部动作和鼠标的使用,这对人体工程学和生产力都有好处
#8楼
这取决于你想用VIM做什么。 学习它是没有意义的,因为很多人不能没有它。
当我在UNIX环境中工作很多时,没有它我就活不下去。 即使VIM没有安装在UNIX机器上,我也至少可以使用vi。 您可以始终指望它 - 即使机器不是您的(来自客户)。
现在我用C#编程,主要用于Windows环境。 我在我的电脑上安装了VIM ......而且我不需要它。
评估您是否真的需要VIM,以及它是否在您的“工作流程”中为您提供支持。 试试看。 玩它。 如果你认为你需要它,坚持下去......学习曲线非常陡峭。
#9楼
首先,良好的vi(m)知识将为您节省时间,以便在服务器上进行紧急编辑配置文件。 它可以阻止ssh连接。
如果您使用符合人体工程学的键盘有效地使用vim的输入法,管理员的东西将是您对腕管的最佳防御。
了解vim的最佳方法是在家中开始一个休闲项目,拔掉鼠标并用胶带盖住箭头键。
并阅读帮助
#10楼
我可以没有它吗? 容易。
它有用吗? 是。
学习的原因
vi保证存在于所有Unix系统上,并且也存在于大多数Linux系统上。 这种广泛的报道使学习它值得。
使用vi进行
sudo
编辑要快得多:$ sudo vi
此外,GMail使用vi-ish命令来选择和移动电子邮件!
你不必是一个主人。
刚刚学习
基础:
- 如何从命令模式切换到插入模式i
- 如何从插入模式切换到命令模式Esc
- 如何在命令模式k中向上导航
- 如何在命令模式下向下导航j
- 如何在命令模式下导航字符h
- 如何正确导航角色l
- 如何保存文件
:w
输入 (写入) - 如何退出而不保存(在命令模式下)
:q!
输入 - 如何撤消你
- 如何重做Ctrl + r
- 您可以组合写入和退出(在命令模式下)
:wq
Enter
从那里剩下的就会让你更快。
#11楼
vi / vim的两个优点:
它非常轻
它几乎安装在每个* NIX系统上
#12楼
我认为学习vim绝对值得花时间和精力。 对我来说,它使文本的输入和导航变得非常有效,很难想象回到emacs或ctrl / shift / alt / meta key组合。
不要被vim的所有奇特功能所吓倒。 一旦你足够使用它,你就会弄清楚你最常用的命令,并且你会弄清楚你可以忘记哪些命令。
#13楼
Vim的无处不在,以及更普遍的Vi-clones无处不在,仅在Unix系统上就足以让它值得学习。
除此之外,整个Vi风格的思维是我认为让我更富有成效的东西。 对于不习惯命令模式和插入模式等模式的人来说,只需插入文本就必须进入模式。 但是,当一个人已经使用Vim几个月,并且已经学到了很多提示和技巧时,Vim看起来似乎是值得的资产。
当然,Emacs的人群对Emacs风格的思考也有同样的看法,但我放弃了学习Emacs的原因,因为Vim更简单并为我做了工作。
#14楼
我学习了vi因为我必须这样做。
我疯狂的老师强迫我们学习使用终端到AIX系统在C中编程。
这是一个真正的痛苦,但值得。
今天,我只使用vi进行快速编辑或小程序。
当我必须去一个项目时,我宁愿使用IDE。 在我的情况下,IntelliJ的想法是非常擅长的任务,因为我可以编写几个小时而不用抓住鼠标。
我不知道VS2008有多少快捷方式,但如果它们像Eclipse一样可以被发现,我认为你遇到了麻烦。
如果您不在IDE之外编辑代码并且您的IDE具有良好的快捷方式,那么您最好学习它们,然后去学习vi。
:)
#15楼
如果您是编辑大量文本的程序员,那么学习A Serious Text Editor非常重要。 您学习的哪个严肃文本编辑器并不是非常重要,并且在很大程度上取决于您希望编辑的环境类型。
原因是这些编辑器经过高度优化,可以执行您将要执行的各种任务。 例如,考虑在每行的末尾添加相同的文本位。 这在严肃的文本编辑器中是微不足道的,但在其他情况下却非常麻烦。
通常认为vim的杀手功能是:A)它几乎可以在你遇到的每个Unix上使用它们B)你的手指很少离开主行,这意味着你将能够非常快速地编辑文本。 即使在编辑大文件时,它通常也非常快速和轻量级。
然而,有很多选择。 当然,Emacs是最常见的例子,如果你真的深入研究它,它不仅仅是一个高级文本编辑器。 在使用vim / gvim多年后,我个人是一个非常高兴的TextMate用户。
切换到其中任何一个的诀窍是强迫自己按照预期的方式使用它们。 例如,在vim中,如果您在多步骤过程中手动执行每个步骤,或者如果您使用的是箭头键或鼠标,则可能有更好的方法。 停止你正在做的事情并查阅它。
如果你什么都不做,请学习vim和Emacs的基本导航控件,因为它们会弹出到处。 例如,您可以在Mac OS的任何文本输入字段,大多数Unix shell,Eclipse等中使用Emacs样式的控件。您可以在less (1)命令中使用vim样式控件,在Slashdot上 ,在gmail上 ,等等
玩得开心!
#16楼
在看了一个熟练掌握它的人后,我学会了喜欢vi,并以极其快速的剪辑进行编辑。 你真的可以用它快速编码。 我喜欢它的另一个原因是,有时候我发现在IDE中捣乱会在一段时间后伤到我的手并且vi提供了一个很好的改变。 正如其他人所提到的,它几乎总是在unix系统上可用,并且即使在糟糕的连接上也能很好地工作。
我没有看到的一件事是,知道vi在某些圈子里有“极客信誉”的额外好处。 我可以想到至少有几个人在看到一个新的程序员开始对文件进行一些更改时会轻笑。
#17楼
我会说vim绝对值得学习。 我去年夏天选择了它,它现在是几乎所有东西的选择编辑器(java是一个延伸,但是当我不需要广泛的分析支持时可行)。 正如每个人都已经肯定的那样,它是一种非常有效的工具。
为了它的价值,我只从图形教程中学习了一小部分vim的功能(花了一两天时间),从这里读了几个零碎(长读),以及搜索和替换功能,我被迷住了。 从那以后我就学会了东西,但是我很随意。 我会说学习曲线在这一点上趋于平缓,但随后,我大量使用它并被其他人包围。
#18楼
绝对值得学习vim或emacs。 它也值得学习触摸式。 在这两种情况下,原因都是相同的: 您的思维不再被将代码放到屏幕上的机械过程所打断 。
至于如何开始,只需潜入并开始使用vim的一切。
PS emacs-vs-vi辩论是无止境的。 我已经使用emacs 26年了。 如果我今天再次开始我会学习vim因为(a)它变得更好而且(b)有更少的修饰键(Ctl-Alt-V,任何人)和vim用户似乎得到更少的打字伤害。
#19楼
不要被命令数量吓到,我没见过最多使用过十几个人的人。 我发现它是必不可少的,因为当我在思考代码时,我正在思考文本,转向思考老鼠只会让我感到困惑。 我认为,大窍门是一次学习一点,不要犹豫不决 - 撤消功能对于探索其行为非常有用。
此外,如果你深入了解它,vim是可编写脚本的。 可能性实际上是无穷无尽的。
(是的,所有这些都适用于emacs ......)
#20楼
我很高兴我的textpad和ecplise世界,直到我不得不开始使用在linux下运行的服务器。 需要远程脚本和配置文件的设置!
一开始很难,但现在我可以轻松设置和调整我的服务器。
#21楼
我在远程计算机上维护一个非常大的linux项目。 没有选择使用Eclipse或类似的基于GTK的IDE。 我在那里工作了3年。 我为这个项目设置了我的vim。 还在调整。
现在我可以从Vim做任何事情:源代码控制,sql,调试,编译,浏览 - 真正快速浏览1Gb源代码。
Visual Studio或Eclipse无法处理所有这些。 如果我有一个选择,我会将Vim更改为其他编辑器或IDE。
#22楼
我和你的情况相同,作为Vim的初学者,我最初发现它有点令人生畏 - 学习曲线似乎很陡峭。 从我在短短几个小时内学到的东西,我已经感觉到如果没有它,我将无法生存。
以下 是我发现的有用Vim截屏视频的一些 链接 ,以向您展示它的功能。
Bram Moolenaar(Vim的仁慈独裁者)在最后一个链接中提出的一个很好的建议是,尝试学习每一个命令和功能都是低效的,只要弄清楚你做的是什么,这不是工作得很好,寻找一种方法,使其更有效,然后养成习惯。
#23楼
您可能想学习vim,因为您可能对您已经使用的编辑器不满意。
你可能想学习vim,因为很多人都说它很酷。 看看你对这个问题有多少答案。
我将提供学习vim的另一个原因。 它以其文档的质量和完整性而闻名。 因此,只要您设法在帮助查询中粘贴适当的关键字,您就会在其帮助系统中找到问题的大多数答案。
#24楼
要快速学习vi(m),首先必须了解整个设计。 Vim有一套很棒的光标移动命令,检查一下(X是一个字符,#a digit):
jk输入箭头0 $ w W b B ctrolD crtolU ctrolE ctrolY HML fX FX tX TX ,; %gg G n N mX'X''
还有更多,这将是无聊的枚举。 其中许多支持命令前的计数,如4j向上移动4行。
现在,回到设计,你输入一个像d一样的命令,用于删除后跟一个光标移动,命令适用于从光标位置直到移动结束的文本。 例如,H移动到屏幕顶部,dH删除到屏幕顶部,cH更改(替换)到屏幕顶部。
这种设计非常强大。 它还减少或组织您需要学习的内容。 确切地说,第一步是学习一些光标移动命令。 比如说,起初是8或10。 然后你差不多完成了。
#25楼
我现在几乎只使用VIM。
我曾经使用Vim进行编辑,使用VS Editor进行调试。 这可能看起来有点疯狂,但我发现Vi范式(宏,基于主键的编辑等)提高了我的工作效率,VS中的编辑很有意义。
感谢Viemu ,我甚至不用再进行切换了。 它还不是完美的解决方案(代码完成有时不像原生vim那样优雅,宏录制也不完美),但它比不断来回切换要好得多。
Vim的学习曲线可能被夸大了。 我想一旦你进入它,它是非常直观的。
#26楼
恕我直言,学习新东西总是值得的。 我建议你打印出一张备忘单,强迫自己每天使用它。
#27楼
Vim绝对值得学习,可以部分总结前面所说的主要原因:
- 在大多数unix系统上都可以找到Vi / Vim。
- Vim允许您轻松编码而无需将手从键盘上移开。
- 如果你计划在基于unix的系统中配置任何东西,你可能会编辑一些配置文件,因此你需要学习一个基于终端的编辑器,其中vim是最好的(抱歉的emacs)之一。
- Vim为几乎所有操作系统编译/预编译二进制文件。 无需发布“我需要一个textmate替代[插入操作系统]”,你将拥有Vim!
- 有很多好的插件可以添加很多功能,例如编辑器内的cvs差异,虽然其中一些需要大量的修补。
另外,如果您发现自己喜欢Vim键绑定,那么还有一些IDE在其编辑器中包含用于简单命令的vim绑定,例如Komodo Edit 。
有关学习Vim的帮助,请尝试在终端中键入“vimtutor”并按照说明操作。 还有一本书特别适合Hacking Vim
#28楼
通过学习只有16个键的含义,你可以从vim中获得良好的功能: ijkdbw9:q!%s/nN
Esc 。 你可以用i:wq
Esc做裸骨。
你需要知道的前两个键是: Esc带你进入命令模式(你开始的模式),然后i
带你进入插入模式(正常打字)。
为了节省您的需要
- 退出打字模式( Esc )
- 输入冒号
:
- 键入小写
w
然后输入
要保存并退出,您需要
- 退出打字模式( Esc )
- 输入冒号
:
- 键入小写
wq
然后输入
为了不节省和强制退出,你需要
- 退出打字模式( Esc )
- 输入冒号
:
- 键入小写
q!
然后输入
要了解更多信息,可以在命令行运行vimtutor
。 这是一个中等长度,结构良好的课程。
超越i
和Esc :只有jkwbd3:%s/nN
才能复制或超越某些MS Word功能。
-
b
带你回一个字( Ctrl + ← ) -
w
带你前进一个单词( Ctrl + → ) -
9w
带你前进九个字 -
db
删除前一个单词( Ctrl + Backspace ) -
d3b
删除前三个单词 -
9j
向下移动9行 - /
ornithopter
Enter将您带到单词“ornithopter”的下一个实例,然后将n
和N
带到下一次和前一次出现的“ornithopter”。 - :
%s/confounded/dangfangled/
Enter用“dangfangled”代替每个“混乱”(比如在MS Word中find and replace all
)
其中任何一个都应该在“命令”模式( Esc )下运行,而不是插入模式( i
)。
#29楼
不,学习vim比努力更有价值。
#30楼
我学会了Vim。 这不是太多的努力。 现在我绝对喜欢ci“ci(cw V:s / from / to / g