vi的典型用例是什么?

时间:2009-08-21 08:16:44

标签: vim vi

我最近开始学习vi,阅读一些教程并尝试习惯它。但我仍然有一些问题。

对于小的一个文件更改似乎很好,但是一旦我开始尝试做更大的事情,它似乎缺乏。例如,我习惯于使用代码格式,导入组织,简单概述所有包以及IDE为我提供的其他内容。我看到了一些关于如何使用vi作为IDE的tutorials,但它充其量感觉很尴尬。

现在我只是想知道,vi的典型用例是什么?它通常用于编辑小文件,还是可以用于大型项目?如果你在大型项目中使用它,你如何使它工作?或者使用带有vi键绑定的IDE会更容易吗?

13 个答案:

答案 0 :(得分:24)

由于以下原因,人们使用像Vi(m)这样的非IDE编辑器进行编码,

  1. 他们不分散注意力,让你专注于工作。
  2. 它们不会使您的屏幕区域混乱,为您提供更多代码空间
  3. 他们更快
  4. 他们在手指的笔触处有更好/更快/更酷的文本操作
  5. 您碰巧将手从键盘移开而不是握住鼠标,将其拖动到此处然后单击。
  6. 他们还可以灵活地支持其他工具,如调试器,文档查看器等。
  7. 他们也有办法解决代码折叠等问题。
  8. 对于正常的程序员来说,理想的工作周期是坐着,编写代码,测试,调试,更多代码,测试调试.Vi提供了一个简单而强大的环境,可以更快,更高效地完成工作。

    对于多年使用某些IDE的人来说,这可能就像使用一些史前工具,但是一旦他们经历了最初的日子,那么就没有回头了。他们觉得没有更好的事情。

答案 1 :(得分:12)

答案 2 :(得分:7)

我还没有做过任何你在python中称之为大项目的东西(只有很少的测试脚本),但是我只使用Vim来编写大型嵌入式C应用程序而且我从来没有真正感觉到需要一个IDE

Vim启动速度快,使用起来非常快,并且(通过一些自定义)可以执行IDE可以执行的大多数事情。它将完成代码完成,代码自动缩进和重新格式化,并且非常擅长重构。 project plugin http://www.vim.org/scripts/script.php?script_id=69可以很容易地管理包含大量文件的项目,taglist plugin http://www.vim.org/scripts/script.php?script_id=273非常适合浏览源代码。它还允许您将C代码与python代码,汇编代码和乳胶文档并排打开,而无需为每个代码使用不同的工具。

总的来说,我认为有一个非常有价值的东西是Vim给你的,很少有其他编辑做的,我会发现很难失去它:我可以将一个窗口分成三个部分,如:

GVIM Split Window

每个子窗口都可以显示单独的文件,或者(如屏幕截图中)显示文件的单独部分。我想emacs可以做到这一点(虽然我可能错了),但我怀疑很多IDE都可以。这对于重构和引用文件的其他部分非常有用。

答案 3 :(得分:6)

我多年来一直使用VI(M)和Emacs作为我的主要编辑器......我已经尝试过切换到IDE但发现它们不能让我的方式不够。我总是在一段时间后回到VI(M)或Emacs。一个主要原因是我发现我的手需要在IDE中过多地放置键盘,因为它们经常需要鼠标......而且我懒得为所有东西设置我自己的快捷方式。

答案 4 :(得分:3)

这就是我使用它的原因。

  1. 启动很快
  2. 它可以在多个平台上使用,并且可以在所有Unix机器上使用
  3. 使用起来快(常用操作的击键,基于单词/段落的操作等)。
  4. 但是,我使用IDE进行大规模的开发工作,因为我不相信它们可以因为代码感知和重构能力而被打败。我使用Eclipse,但是我将VI编辑器模拟器插入其中。有关详细信息,请参阅this answer

答案 5 :(得分:3)

虽然并不总是那么漂亮,但是(g)vim可以配置为执行IDE可以执行的所有操作......还有更多。您只需找到right plugins

经过一段时间的习惯后,其他ide和文本编辑器相比之下会变得笨拙和低效。

vim会让人上瘾。

答案 6 :(得分:2)

  

我看到了一些关于如何使用VI作为IDE的教程,但它充其量感觉很尴尬。

一开始就有一件事要做:把你的审美感抛到脑后。您将从未在VIM中获得与在体面的IDE中相同的图形体验。

也就是说,VIM实际上 提供了一个完整的IDE的许多功能,并且还有很多优点。我使用VIM几乎完成了所有开发工作和所有我的文本文档(使用Vim-LaTeX) - 尽管我实际上已经为Apple的办公套件iWorks支付了费用。

但有一点仍然在唠叨我:I can't get IntelliSense to work。对我来说,这是一个很大的问题,特别是当使用VB,C#或Java等语言时,它们支持出色的IDE支持。

所以,VIM的学习曲线很陡,但是一旦你超过了某个点,它就会变得尴尬。事实上,与VIM的编辑体验相比,你会发现这些IDE突然变得尴尬,因为虽然他们擅长簿记的东西,但他们很擅长编辑。

答案 7 :(得分:2)

我经常在远程系统上工作,为群集编程或在无头盒上编辑配置文件。所有这些都可以通过文件传输,常规IDE和其他文件传输来完成,但通过SSH使用VIM要快得多。

答案 8 :(得分:1)

Vim不太擅长代码感知。擅长的是文本操作。它为您提供了编辑文本的工具,而不是为您编辑。如果您只是进行“小”编辑,并且没有阅读偶尔的“你希望你知道的vim命令”,那么你将无法理解所提供的功能。

  

代码格式

使用=完成格式化。您也可以将equalprg指向外部程序,为您进行格式化。

  

导入组织

如果选择导入行

,Vim将无法删除未使用的导入
:'<,'>sort
  

简单概述所有包

:vs .

这将打开一个包含当前工作目录的垂直窗口:)

总之,vim无法取代您的IDE,但它可以让您编辑文本。

答案 9 :(得分:1)

您几乎可以在任何地方找到它(或轻松安装它) - Runs on all systems that can implement the standard C library, including UNIX, Linux, DOS, Windows, Mac, BeOS, and POSIX-compliant systems.

登录远程服务器并自信地编辑配置文件的能力是无价的。

答案 10 :(得分:0)

as usuall:根据您的工作选择您的工具! ;-)我正在使用Vim和Visual Studio。您不必只选择一个。

  • 如果您需要IDE,请使用IDE。 Vim用于文本操作。
  • 它支持任何语言。尝试使用Visual Studio编辑Ruby脚本。
  • 大文件的性能要比大多数IDE好得多。尝试使用IDE分析具有100k行甚至更多行的日志文件。
  • 如果您必须在服务器上编辑文件,它可以在许多平台上运行,您可以通过远程控制台使用它。
  • ...

IDE是专门的工具,可以解决它们的问题。 Vim是一个令人难以置信的灵活而强大的通用工具。

答案 11 :(得分:0)

这显然是一个热门话题,因此我将列出为什么我更喜欢IDE编辑器进行编码的原因。 1)我更喜欢能够折叠我的代码部分(我不知道Vi(m)是否可以),而不必记住命令或输入它。

2)我更喜欢单击编译按钮/命令,而不是必须记住我的编译命令及其选项库

3)我更喜欢更轻松的高亮复制粘贴操作,而不必........ aah sod it !!

现在你得到了照片。我不是敲Vi(m)我只是认为你的编码环境的元素和功能在视觉上表现得更清晰,并鼓励探索你可能不知道存在的选项。

答案 12 :(得分:0)

我更喜欢vim over vi而不愿意将它们混为一谈。 Vim提供了一些非常方便的功能,并不总是很明显。已经提到的是屏幕分裂。您也可以查看ctags或exctags。这些允许您从vim内跳转代码库。我可以将光标放在被调用的方法上,跳转到定义,跳转到该方法中的定义等。非常强大的跟踪错误。 Cscope是另一个类似的计划。

Vim还允许您在环境中运行任意shell命令,并具有强大的搜索和替换功能。

因此,IDE将提供大部分内容,vim将通过传统的基于GUI的IDE提供什么?这很容易,它在CLI上运行。

这允许我登录我的开发框,运行屏幕(肯定要检查陌生的:http://www.gnu.org/software/screen/)并在我的开发框中的屏幕会话中运行多个vim会话。现在,当我离开工作时,即使在运行构建时,我也可以在离开工作时离开工作会话。当我第二天上班时,我可以从我的环境中连接,好像我从未离开过。

特别喜欢vim或vi的另一个原因是它几乎可以在任何Unix环境中找到。