在某些情况下,vi是唯一的选择吗?


22

vi在Ubuntu环境中,有没有唯一创建,编辑或修改文件的方案?

我的问题是基本上要真正知道是否有这样的情况,vi因为在Ubuntu生态系统中的特定情况下,这将是我唯一的选择。

莫非特殊情况存在,我不知怎么就不能访问其他选项,如nanopico或简单地用工具发送的信息等catsedtee多?

我认为这更多是在服务器或云端,因为在桌面上有更多选择,但是对于经常使用终端的人,我要问:

有这种情况吗?



8
@Tim实际上visudo可以使用任何编辑器。由于其在Ubuntu上的默认配置会考虑EDITORVISUAL环境变量,因此您可以sudo env VISUAL=emacs visudo为emacs甚至gksudo env VISUAL=gedit visudo图形编辑器(如Gedit)运行。(sudo -Hsudo -i可以代替使用gksudo。)我建议这种env方式VISUAL=emacs sudo visudo不起作用(会sudo重置大多数环境),并且sudo -EH 可能不建议这样做。
伊莱亚·卡根

3
vi是唯一的选择...当vi是您知道的唯一安装的编辑器,并且您不想花费时间安装另一个编辑器时。当vi是您所知道/最喜欢的可用编辑器中的一个,而您又不想花时间安装喜欢的编辑器时,vi是最好的选择。在任何情况下,永远只有一种工具能够解决问题。有时可能会限制选择。有些人实际上喜欢vi。(不是我。我是Emacs的支持者。尽管我可以容忍许多编辑。)
keshlam 2014年

3
catsed?真?vi其实并没有那么复杂,并且如果您真的不愿意去学习它,则只需记住两种模式(普通模式和插入模式)。用箭头(或HJKL,如果不可用)移动光标,按“ i”开始编辑(插入模式)。完成后,按“ Esc”返回正常模式。键入“:wq”以保存并退出(写+退出)。
sleblanc

2
只需掌握它并学习vi :)它并不像它最初出现时那么难,一旦您知道它,您将永远不会浪费时间在您使用的任何新系统上寻找其他编辑器。
JamesRyan

Answers:


32

Ubuntu生态系统内部,我认为这种情况甚至不可能存在vi至少不会像Vim-Tiny那样存在,这已经是“真实的vim” ,而不是“真实的” vi

资源有限的嵌入式系统(通常不是Ubuntu)的情况下,可能只有一个vi事实证明是的链接busybox。而且没有剩余的空间。然后,vi是唯一的选择。

除此之外,我认为,即使在Linux世界之外vi唯一的选择今天也不是很普遍

但是,可以很容易地在那里的情况vi,你可以计划的唯一选择,那certaily将在未来的某个状态存在的唯一选择-这将发生一个客户的过度冷冻机房内,最有可能。

假设您被客户打来电话:

客户:我需要修复此配置!现在!!我不知道如何,但是我可以告诉您配置文件在哪里。你能帮助我吗!?!

您:好的,那是哪种系统?

客户:哦,它在服务器foo上,啊……它正在运行……不记得了,最后带有“ ix”的东西,或者带有“ ux”的mayeb ...

没问题,到现在为止,您知道将会有vi


1
我曾经在许多嵌入式系统上进行过工作,这些嵌入式系统仅包含vi作为文本编辑器,我相信当使用最少的配置选项时,buildroot和yocto都将其作为唯一的编辑器。诚然,这在ubuntu上不是问题,但是如果您是嵌入式开发人员,那么这可能是一个实际问题。但是,您总是可以按照OP所说的那样使用基于管道的工具,例如sed,sort,grep等,但这可能非常痛苦。

busybox的情况下,确实是一个很好的一个。令人讨厌的是,我不认为它甚至不是完整的vi(至少不是在十年前,而且我希望他们没有使它膨胀,即使它令人讨厌)。
海德2014年

1
busybox vi是4k行: curl -s https://gitorious.org/busybox/busybox/raw/1c7a58dfb82ea04c525e0c19f94f2d800dee99e3:editors/vi.c | wc;)
Volker Siegel 2014年

17

Vi绝不是唯一的选择。您可以随时使用ed


8
例如,在Arch Linux中,它ed不是的一部分base
muru

@muru FWIW vim也不是。
Sparhawk

4
@Sparhawk vi是。
muru

@muru当然可以。我很困惑。
Sparhawk

ed仅是standard^安装的一部分。如果您进行minimal安装,ed则不包括在内。
奥利(Oli)

13

好吧,在一种情况下,您需要vi编辑器,让我们假设:

  • 没有图形界面
  • 你在一些奇怪的未知*nix系统上
  • 您的终端如下所示:

在此处输入图片说明

  • 你有足够的像这样的人:

在此处输入图片说明

如您所见,没有数字键盘。与旧的vi(我指的是原有的传统vi,而不是vimvim.tinyvim.basic),您可以编辑这个键盘配置文件。没有方向键?是的,当你在命令模式是您通过与文件移动hjkl,像亲。h左,j下,k上,l


5
我认为这个答案实际上并不是那么糟糕(像打字机一样的键盘并不是完全不可能遇到的事情),但实际上这并不意味着您vi特别需要。所有较旧的文本编辑器都有“备份”键组合,使您无需箭头键等即可工作,尽管我敢说这vi是唯一一个您不会错过箭头键的编辑器。
大约

有点离题:我不明白为什么您需要一个数字键盘来进行任何文本编辑器,而箭头键在Vim中仍然无用。:P
门把手2014年

1
嘿,不要打折好老ed!在这样的系统上,不需要这些“视觉”头!只需尝试在纸质终端上使用vim并查看如何管理...更严重的ed是,无论如何,了解是有用的,当需要编写脚本的脚本时,这是一个不错的选择。
海德

您如何使用该键盘切换到命令模式(我看不到转义符;是否还有其他组合键?)
Foon 2014年

@Foon有一个转义键=)它通常是制表符的位置。在Q键的左侧 。
混乱

6

事实是,在许多发行版中,像nanopico都不是标准的编辑器,而其他软件包就是vim-tiny此处是ubuntu-minimal的软件包列表,vim-tiny是唯一的编辑器根据这个答案,Ubuntu服务器也是如此。我知道基本的Debian,Fedora也是如此。

话虽这么说,如果您已经nano在系统上运行,那么我还没有看到您必须使用它的情况vi,但是如果您正在为客户工作而又没有使用@Volker的答案,根访问权限?apt-get install nano不会对您有多大的帮助(如果它甚至可以访问外部互联网!)。


4

在很多情况下vi(并且我自然地意思是vim.tiny因为这就是我们所提供的)可能是唯一的交互式编辑器。如果我们忽略蝴蝶和宇宙射线,这些似乎是最有可能发生这种情况的场合:

  • 您仅在使用ubuntu-minimal基本元包。这取决于vim-tiny 但没有其他编辑器。我目前无法找到一种无需standard^任务即可安装Ubuntu的方法,但是您可以在安装后通过以下方法将其删除:

    sudo apt-get remove $(apt-cache show standard^ | awk '/Package: / {print $2}')
    

    我有没有standard^安装任务的系统映像的个人经验。如果我没有网络访问权限,那vi将是我唯一的选择。

  • 扎根到仅vi通过以下方式映射的环境中

  • 手动取消所有其他编辑器的权限(并禁用重新安装它们的方法)

  • 手动破坏外壳程序以停止vi启动已知编辑器。

真正最小的安装是最可能的原因,但是这些天来很少出现。一些VPS和云托管公司使用它们(以节省磁盘空间以及其他任何东西),但是我建议它们绝对不是标准。


一如既往的出色答案。我觉得它知识渊博。
Luis Alvarado 2014年

2

如果您无法安装emacs,或者需要修改配置文件才能安装emacs。:-p


或者,当您要使用比emacs更好的高级编辑器时。(cue Flamewar):P
门把手2014年

3
当然,如果您使用的是Ubuntu,那么您已经一个操作系统,因此emacs将是多余的:v
evilsoup

嘿,很好的反击。:-p
Craig

2

许多(大多数?)Busy-Box安装仅具有vi

它不是特定于ubuntu的,但在许多嵌入式设备中都是如此。


2

总是有猫,头,尾巴……所以我不确定是否有没有其他选择的系统,但是即使您更喜欢emacs ,也有可能找到没有更好选择的系统。

我的示例是我曾经管理的系统,它要么太慢(要么行很慢而且有损),以至于在使用光标键进行导航时,它经常突然切换为将垃圾插入并注入到已编辑的文件中,并使用HJKL进行移动是唯一可靠的选择。


1
当然是好老蝴蝶了
左右左转

2

在这种情况下,vim是Ubuntu生态系统中的唯一选项:除之外Ubuntu Snappy没有其他文本编辑器vim-tiny。也许将来会有一个,但从2015-16年起不会。如果要通过串行控制台或ssh使用Ubuntu Snappy,最好准备使用vim


0

一旦只有vi的linemode工作,我就陷入了困境。与确实弄乱了终端定义有关。基本上,只有行模式下的vi(如果您假装有1行终端,它的行为就与普通vi一样),ex和ed将起作用,因为唯一的终端定义是“哑巴”。

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.