2010-06-22 32 views
2

我一直在使用Notepad ++一段时间;实际上,我甚至已经开始使用Launchy来“将这个资源加载到编辑器中”,许多更完整的IDE就像Eclipse一样。它具有语法高亮显示,拆分窗口视图,代码折叠,圆括号(和其他分隔符)配对,自动缩进,块注释。使用vim编程Ruby(通过Notepad ++)有什么优势? (其他语言,但特别是Ruby)

但是,似乎无处不在,人们正在使用vim来满足他们的编程需求。

我知道vim的基础知识;当我在linux机器上时,它是我的主要“基本文本编辑器”;我像使用Windows上的基本记事本一样使用它。我得到的控件,大多数快捷方式,重复消除器等。

我不完全理解的是这些杀手级应用程序,人们都赞同。如何“在Ruby中调试Ruby是一种改变生活的体验”,或者在使用它时如何发生魔法。

我错过了一些重要的插件吗?有没有我没有看到的维度?我应该闭嘴并开始使用它一下,看看?我如何获得语法突出显示?

我特别指定了Ruby,因为我想为它找到一些插件。请注意,我是而不是使用Rails的,答案应该与rails无关。但我欣赏一些关于其他语言编程的一般vim-ness koans。

谢谢,我希望我的问题不是太模糊或启发任何讨厌的编辑之战。

+0

我很惊讶你会看到很多使用Ruby的程序员。我看到许多使用它的系统管理员,并且在服务器上运行时我自己使用它。它总是在那里,加载速度很快。对于编程,这确实是一个偏好问题。我看到很多使用TextMate for Ruby的人。我自己使用TextMate,Netbeans和我现在使用RubyMine。 – Pablo 2010-06-22 10:39:59

+2

@ j-pablo-fernandez你的意思是“我很惊讶你看到很多使用Vim编写Ruby程序的程序员”?否则,你说的是非常不同的东西。 – Telemachus 2010-06-22 13:52:44

回答

5

我使用vim进行所有的Ruby编程,我认为它的可定制性是它的杀手级功能。使用vim,你可以做所有可以想象的文本,如果你愿意投入时间寻找你想要的插件或者自己编写几个脚本。

我只列出我喜欢的vim编程的几件事情(排名不分先后):

  • 语法高亮

    红宝石语法高亮是非常好的。具体来说,有一点似乎有点独特,就是根据上下文,关键字的颜色可能会有所不同。这并不是我想要的那么多,但是你可以很容易地看到这个end语句是否关闭,比如if语句或函数定义。

    另外不错的是,由于vim知道文本的哪些部分是注释,所以你只能对这些进行拼写检查。

  • 自动缩进。

    当您编写代码时,vim会自动将光标放在正确的缩进级别,所以您不必担心这一点。我还发现自己通过选择一个块并按=自动(重新)缩进突出显示的所有内容来手动调用此功能。

  • 自动完成

    我用一个plugin自动弹出completions。这些都是非常灵活。他们知道的类从标准库的方法,看看其他的文件已打开(好变量名和类方法),承认当你输入一个文件名等

  • 片段

    有是一个名为snipMate的插件,提供了经常使用的文本片段的快捷方式。这对编写测试等很有帮助。

  • 代码折叠

  • 脚本化

    正如我所说的,Vim的脚本是非常强大的。在行末尾需要自动删除空白吗?只需编写一行脚本。

  • 插件,插件,插件!

    有很多插件可以帮助你处理各种事情。 Git的整合,Rails integrationRspec integrationautoclosing括号,matching关键字打开块{defdoifwhile等}他们end ...名单是几乎是无止境的。

1

对我来说,vim的“杀手功能”之一就是它的ad-hoc macros

q然后一键名存储在宏(我经常使用m为宏记忆,但任何字母都可以),你会发现在底部的recording状态。现在,您按下的任何按键都将被记录,直到您再次按q,并且您已在信m中记录了一个宏。现在键入@m,您的击键将从当前光标位置开始播放,具有所有含义。按[email protected],您将重播该宏20次,现在您已经拥有了编写文本的强大工具,无需编写较大程序(或配置文件)的开销。

对于红宝石具体地,语法突出显示(:syn on),自动缩进(:set cindent),和括号/托架配对(%将光标移动到匹配的括号)和其它的特征可以在其他编辑中找到,因为你提。但是,真的,vim中的一般文本处理宏对于任何文本文件都是很大的优势。

+1

我不认为我已经使用了一个被称为“程序员编辑器”的编辑器,这个编辑器在很多很多年没有某种形式的临时宏观录制系统。 (我在说这里的DEC微型计算机操作系统级别。) – 2010-06-22 14:26:03

1

vim的个人杀手功能是谦卑的.命令。该命令重复当前光标位置的最后编辑。这可以节省很多时间。

2

它是一款非常强大的编辑器,它与版本控制很好地集成在一起,并且有很多可用的附加组件。 (请参阅the scripts page以及the tips wiki。)这些是考虑 Vim的很好的理由,但也有许多其他良好的编辑器可用于各种平台。 (看,马,没有宗教编辑的战争!)

就非常特定于Ruby的附加组件而言,请查看endwise by Tim Pope作为示例。 (它会在do,if等之后自动插入end)。实际上几乎所有的Tim Pope's scripts都可能对Rubyists有用。

如何获得语法高亮显示?

至少需要一个最小.vimrc.gvimrc获得语法高亮和自动缩进(假设你想要的)。 Vim附带了可以帮助你开始的例子,如果你搜索'vimrc'或'gvimrc',你会得到很多点击。也就是说,下面是我的一些开始:

" Most general settings first 
set nocompatible   " Set Vim rather than Vi settings; must go first 
set noeb     " Set no audio or visual error beep 
set bs=indent,eol,start  " Backspace over everything in insert mode 
set history=500    " Keep 50 lines of command line history 

" Set items for view @ bottom of windows 
set ruler     " Show the cursor position all the time 
set showcmd     " Display incomplete commands 
set showmode    " Display current mode 
set ls=2     " Always show status bar 

" Syntax basics 
syntax on 
filetype indent on 
set autoindent 
set smartindent 
filetype plugin on 

" Text basics 
set textwidth=80   " Set text to wrap at 80 columns 
set expandtab    " Convert tabs to spaces 
set tabstop=4    " Tabs = 4 spaces 
set shiftwidth=4   " Indent/outdent 4 spaces 
set softtabstop=4   " Tab key indents 
set shiftround    " Indent/outdent to nearest tabstop 
set smarttab    " Uses shiftwidth @ start of lines 
set fo=trcn 

" An exception for Ruby files 
autocmd FileType ruby set tabstop=2 
autocmd FileType ruby set shiftwidth=2 
autocmd FileType ruby set softtabstop=2 
autocmd FileType ruby set number  

" Search basics 
set incsearch    " Do incremental searching 
set showmatch    " Show matching brackets 
set hlsearch    " Highlight all matches in a search 

" Don't use Ex mode, use Q for formatting 
map Q gq 

" Pick a colorscheme 
colorscheme Dim 
1

我认为VIM的主要优势在于它是跨平台的。现在你使用的是notepad ++,这是一个很棒的编辑器(即使它没有很好的宏功能)。明天,你可能会被迫使用另一个操作系统,你应该学会使用另一个文本编辑器。

1

我知道你来自哪里。我使用IDE甚至记事本++的时间长于我的记忆。如果所有使用VIM的都是基本导航,那么您将不会充分利用它的潜力。虽然有几个非常强大的插件,但我不相信找到合适的插件是VIM如此强大的原因。

这对我来说意味着我的双手不会从键盘上移开,它可以让我留在区域中。每次我去看老鼠,总会导致集中突破 - 作为一名程序员是不可饶恕的罪过。

我的另一个杀手功能是使用正则表达式进行搜索和替换。我强烈建议多了解一下。或者用Jamis Buck的话说:“了解你的工具”。

ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf

是开始一个伟大的方式,但我想我会建议O型赖利的书在这一个,如果你想花的钱。在VIM中获取基础知识很容易,但掌握它需要时间 - 但它们的收益是巨大的。

+0

我一直听到来自'vim'和'emacs'倡导者的“巨大回报”的声明,但我多年来与许多这样的倡导者一起工作从来没有见过这些说法被证实,因为*编码不是一个好的软件开发人员所做的大部分*。 – 2010-06-22 14:24:49

+0

不够公平,但是在文本编辑器和这个问题的背景下 - 编码是一个好的软件开发人员在文本编辑器中完成的工作。最后,使用什么工具并不重要 - 如果你了解它们,它们将会很好地为你服务。对我来说,收益是巨大的,我在编辑中的时间比以前更有效率。我真的很需要你。 – 2010-06-22 14:51:36

+0

对于我而言,痴迷于编辑的程序员与迷恋轮胎仪表的机械师相似。力学*做*使用轮胎测量仪,但检查轮胎压力不是他们工作的主要部分。扳手和其他东西比轮胎压力表更重要。当我编程时,输入代码是我花费的少数时间(即使使用我的“低效”工具)。如果我花了十年的时间学习'vim'的每一个角落,可能编码*会更有效率。因为那不是我花时间在那里度过的时间,为什么呢?我还有其他需要花时间学习的东西(比如API,库和语言)。 – 2010-06-22 15:24:15

相关问题