我是Windows用户,感谢WSL来使用Ubuntu的Bash 。现在,我需要编辑一些文件,我真的很讨厌Vi。我只需要处理它,还是有一个更简单的选择?
我要寻找的功能是:
- 基于CLI
- 易于使用(键入和编辑应类似于记事本)
- 简单的编辑功能就足够了
我将尝试掌握Vim,但现在需要快速进行编辑!
我是Windows用户,感谢WSL来使用Ubuntu的Bash 。现在,我需要编辑一些文件,我真的很讨厌Vi。我只需要处理它,还是有一个更简单的选择?
我要寻找的功能是:
我将尝试掌握Vim,但现在需要快速进行编辑!
Answers:
如果您正在寻找替代编辑器,您并不孤单。基本上,生命太短而无法学习vi
,我说这是一个以软件开发为生的生活。但是,您应该学习如何退出它,因为这对于每2万名程序员来说是一个问题。另外,执行一些基本的追加/插入操作可能值得学习,因为在某些顽固的服务器上您找不到其他任何编辑器。
现在,您问题的答案可能是nano
。
如果您正在运行某些自动生成脚本,使用git
或运行其他命令,它们可能会vim
在您不希望打开的情况下打开。您可以通过在继续之前运行以下命令来防止这种情况:
export EDITOR=nano
EDITOR
小费的额外点
这是见仁见智。
初学者使用nano。
vim(“ vi改进的”)具有一些学习曲线,但功能非常强大。有关vim或其他任何vim指南,请参见本入门指南,也可以参见vim教程vimtutor
(包含在vim中)。
现在我强烈建议纳米
nano -B /path/to/file/to/edit
-B进行备份
命令带有控制键,并在编辑器窗口的底部列出。
有关语法高亮的指南,请参见:如何在nano中启用语法高亮?
emacs
是两者的替代品vim
,nano
也有很多好处。emacs
比纳米更复杂。您可以看到emac的导览。
仅出于完整性考虑,Vim +主题(例如Zenburn)可能会很有帮助
vi/vim
。:)它在每个nix设备上。:)基础并不难。
您是否曾经因为您的文本编辑器没有执行您想要的操作而感到沮丧?激怒了你不记得了...
- ...如何寻求帮助?
- ...什么是什么意思?
- ...您读过本科的小利珀?
一个小小的勇敢世界正在等待!
当我们提倡最喜欢的轻量级文本编辑器时,让我推荐eXcellent,微小和快速的xo
(exofrills)。
这是一个单独的Python 3文件,并且对通过Pygments突出显示语法有很好的支持(尽管与非Python并不完美):
它还具有极其简单和有用的按键组合,可以轻松,轻松地更改您的内心内容:
其它功能:
- 单个文件中少于850行代码!
- 语法高亮!
- 正则表达式匹配和替换!
- 搜索历史记录缓存!
- WTFPL许可!
- 完全可定制!
- 从非原产地开始!
- 在单词之间跳动!
- 跳到文件中的任何位置!
- 整个文件插入!
- 初学者友好-也许您是新手!
- 复制并粘贴文字!
- 行和列状态!
- 只有一行非文本编辑空间!
- 既保存又加载!
Python3源位于github上,您可以使用以下命令更轻松地安装它:
sudo apt install python3-pip
sudo pip3 install exofrills
exofrills:您的文字已被编辑...但是您仍然很饿。
免责声明:我绝不隶属于exofrills项目。
虽然我不能否认我一开始就太在为vi苦苦挣扎,但我认为可以提出一个论点,即vi实际上非常简单易学。(当我开始使用Unix时,选择的是vi还是emacs,所以当我选择ed时,ed是一个非常简单的行编辑器,我从阅读早期的Unix教科书中学到了这一知识。)我每天都使用vi,但我可能仅使用其功能的很小一部分。
这是使用vi的第一个论点:vi在所有系统上都存在,仅使用很少的资源,并且可能在不稳定和缓慢的连接上可用,在这种情况下其他编辑器可能会失败或变得缓慢且无法使用。或者在系统损坏的情况下,箭头键无法正确解释(例如,错误的terminfo设置。)因此,vi可以用于修复导致问题的配置文件,而不受问题的影响。
以下是学习vi的有用子集的方法:首先:停止将vi视为交互式的终端GUI“编辑器”,并将其视为用于操纵文本文件的编程语言。最初,“ vi”代表可视模式,而vi具有非可视对应项ex,这是一个很好的起点。在shell提示符下键入ex(我将使用¬表示return):
$ ex¬
Entering Ex mode. Type "visual" to go to Normal mode.
:
现在按回车。
:¬
E749: empty buffer
:
因此,让我们放入一些东西。键入“a¬”,然后键入一行文本,然后键入一行上的句点:
:a¬
Hello World¬
.¬
:
那是附加命令。简单,简短和助记符。但是很高兴看到缓冲区中有什么:
:%p¬
Hello World
:
显然,这是打印命令p。%是行范围的简写。每个命令之前都可以加上该命令应适用的行号或范围。%表示“所有行”。$表示最后一行,句点表示当前行。数字表示该行。范围被写为n,m,并且可以加上或减去一个数字,因此。+ 1,$-1表示从下一行到倒数第二行。仅由行号组成的命令将转到该行。这是我使用的其余命令小子集:
:1i¬
this text is inserted before line 1.¬
.¬
:
:w /tmp/filename¬
"/tmp/filename" [New] 2L, 49C written
:
w将所有(或选定范围的)行写入文件。
:1d¬
删除第1行。
:.s/Hello/Hello,/¬
Hello, World
:.s/$/!/¬
Hello, World!
s替换正则表达式。知道正则表达式真是太好了!
:q¬
E37: No write since last change (add ! to override)
q退出。wq写入并退出。q!不写就退出,以类似的方式,w!如果可能,强制写入文件。
现在很酷:
:p
Hello, World!
:.!tr a-z A-Z
:p
HELLO, WORLD!
!作为命令将行过滤为shell命令。
最后:
:vi¬
进入VISUAL模式。不要上当。它看起来像一个编辑器,但仍然只是一个交互式编程外壳。您只需要一直查看缓冲区,以及其他一些命令。在可视模式下,a:显示ex模式下的:提示。箭头键(如果它们起作用)移动,如果不起作用,则hjkl起作用!h左,j向下,k上,l右。0移至该行的第一个字符,而^(请在此处考虑正则表达式!)移至该行的第一个非空格字符。$(再次是正则表达式!)移动到行尾。就像在ex模式下一样,键入:999¬转到第999行。
“ i”进入插入模式,该模式现在插入字符而不是行,并以转义而不是“.¬”结束。“ I”插入到开头,在光标下方的字符之后插入“ a”,并在当前行的末尾插入“ A”。输入文本后,请始终按Escape键。“ x”删除光标下的字符,“ D”从光标删除到行尾。“ Y”取消(复制)当前行,“ P”将其粘贴回去。“:pu”的作用相同,但是可以在行号之后加上。“:ya”是“ Y”的前等价物,同样适用于行范围。我认为也有一个mark命令,但我承认我不记得它了。我不会错过
以上是我使用的方式,我知道我可能不是一个非常“高效”的vi用户。另一方面,我确实使用ex的多功能性,例如对配置文件进行脚本编写。是否需要在许多conf文件中将您的主机名foo.bar.com更改为www.foobar.com?
for file in conf/*
do (echo "%s/foo.bar.com/www.foobar.com/" ; echo "wq") |ex $file ; done
我想说的是,我认为vi的问题在于人们认为它是一个困难的编辑器。它所要做的只是稍微改变您的思维方式,并将其视为一种非常简单但功能也非常强大的交互式编程语言。如此强大,以至于即使有一部分可用命令,您也可以使用它-不仅可以作为编辑器,而且可以作为与Unix其余部分很好地集成的通用,可编写脚本的工具来发挥巨大作用。我怀疑纳诺会做所有这一切-emacs ...也许。