Isso é ed
Por padrão, seu prompt é a string vazia. Se você quiser sair, basta entrar q
. Não prefixe com :
. Se você tiver alterações não salvas, ele responderá com ?
. Você pode interpretar isso como "você tem certeza?" E confirmar comandando q
novamente. A propósito, qualquer comando que ele não entenda também fará com que ele responda ?
. Essa é a única mensagem de erro que ele conhece.
Seus comandos são o que vim / vi / ex / sed baseia-se, por isso, comandos como g/re/p
, %s/vi/&m/g
, 1,3d
, /pattern/,$d
, w
, q
, wq
funcionam como vim.
Comandos gosto i
, a
e c
entrar em modo de inserção. Para sair do modo de inserção e voltar ao modo de comando, basta inserir uma linha que possui apenas a .
. Para "mover" para outra linha, basta digitar o número da linha, um deslocamento da linha atual como +2
or -1
ou um regex como um comando para ir para essa linha. .
significa linha atual no modo de comando. Você pode usá-lo para saber onde você está. $
significa última linha.
A propósito, se você quiser aprender mais sobre isso, como este é um programa GNU no linux, a maioria de sua documentação está no info ed
lugar de man ed
.
Aqui está uma sessão de exemplo, com comentários adicionados (não aceitos pelo ed):
$ ed
i # insert (on current line)
vi
. # end insert
%s/vi/&m/g # substitute vi for vim globally in all lines
i # insert (on current line)
first line
. # end insert
$a # append on last line
last line
. # end insert
%p # print all lines
first line
vim
last line
2 # move to line 2 and print it
vim
/line # move forward to line matching /line/ and print it
last line
-1 # move 1 line backwards and print it
vim
?line # move backward to line matching /line/ and print it
first line
+1 # move 1 line forward and print it
vim
g/line/p # print lines matching /line/ (grep)
first line
last line
p # print (current line)
last line
. # move to current line and print it
last line
c # change (current line)
final line
. # end insert
%p # print all lines
first line
vim
final line
/vim/,$c # change from line matching /vim/ to last line
that's all
. # end insert
%p # print all lines
first line
that's all
wq # write and quit
? # write what?
h # help with last error message
No current filename
wq # write and quit to check error message
?
H # help with all error messages
No current filename
wq # write and quit to check error message
?
No current filename
wq file.txt # write file.txt and quit
22 # wrote 22 bytes
EDIT: Como menciona grawity, mensagens de erro mais úteis podem ser ativadas com h
ou H
. Além disso, em ,
vez de %
no intervalo, parte de um comando é a maneira oficial de se referir a "todas as linhas" em ed
. No GNU ed
, a possibilidade de usar %
para isso é suportada, mas não mencionada no info
manual. %
Aparentemente ex
, o uso de para todas as linhas foi inventado , aparentemente porque, ali, ,
significa .,.
mais do que 1,$
gostar ed
.
EDIT2: Definindo um editor diferente
Como outras respostas mencionadas, se você desejar especificar um editor diferente, poderá fazê-lo configurando as variáveis de ambiente EDITOR
ou VISUAL
. A diferença entre os dois é explicada nesta resposta .
Você pode fazer isso assim se desejar configurá-lo para um único comando:
EDITOR=vi crontab -e
ou assim, se você quiser que todos os programas iniciados na sessão shell o usem:
export EDITOR=vi
crontab -e
Você pode salvar o export
in ~/.profile
ou /etc/profile
, dependendo se desejar que ele seja uma configuração de usuário ou sistema para o bash, respectivamente. Essa é a maneira portátil unix de definir o editor; você pode fazer isso em qualquer distribuição.
No Ubuntu, também há o update-alternatives
comando. O editor padrão atual pode ser visto com update-alternatives --display editor
, e você pode usá update-alternatives --config editor
-lo para configurá-lo:
$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 10 manual mode
Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode.
ed
: por padrão, fornece uma contagem de caracteres (que em sistemas baseados no Debian é tipicamente888
a primeira vez, sendo o número de caracteres no modelo "vazio" do crontab). Se você estiver vendo uma contagem de 0, deve ter modificado isso. Veja comando crontab -e não está funcionando corretamente