Como edito um arquivo atualmente sendo usado pelo vi?

1

Eu sou novo no Linux e estou experimentando o Ubuntu 11.10. Estou configurando um servidor SSH e uma das instruções me pede para editar o arquivo sshd_config usando o vi.

No vi, não me lembro o que aconteceu (é tudo um borrão agora), mas as teclas para cima / para baixo se transformam em letras maiúsculas. Depois de um tempo, desisto, pesquiso no SO e a solução é usar o vim, não o vi. Então eu tento sair do vi (não lembro o que fiz), mas voltei para o console.

Então, quando eu digito o sudo vim / etc / ssh / sshd_config, ele diz que existe um arquivo de troca. O uso de ls -A lista apenas o sshd_config e não vejo um arquivo ssh_confid.swp em lugar algum.

ps -ef | grep vi

mostra isso:

root      2914  2135  0 10:45 pts/0    00:00:00 sudo vi /etc/ssh/sshd_config
root      2915  2914  0 10:45 pts/0    00:00:00 vi /etc/ssh/sshd_config
user       4066  2135  0 11:28 pts/0    00:00:00 grep --color=auto vi

Então eu tento matar os processos, usando o sudo kill 2135 2914 2915 e nada acontece. Como eu saio dessa bagunça?

Obrigado.

    
por okysabeni 29.02.2012 / 17:35

4 respostas

2

Primeiro, se

sudo kill <pid>

não mata um processo após várias tentativas, tente

sudo kill -9 <pid>.

Isso forçará o processo a terminar.

Em seguida, execute um

ls -a /etc/ssh | grep ".swp"

para procurar por arquivos de troca. Você provavelmente encontrará um arquivo chamado ".sshd_config.swp", então você vai querer deletá-lo antes de tentar editar o arquivo / etc / ssh / sshd_config.

sudo rm /etc/ssh/.sshd_config.swp

Se você quiser saber mais sobre o Vim, aqui estão alguns links para os tutoriais do Vim. No entanto, eu recomendaria nano para alguém que é novato no Linux.

O Tutorial Interativo do Vim

Gráfica e tutorial do vi-vim

    
por 29.02.2012 / 17:58
0

Você pode sair de vim sem salvar digitando : q! .
Se você deseja salvar o arquivo, digite : wq ou : x .
O arquivo swp criado por vim é um arquivo oculto que começa com . (ponto).
Espero que te ajude.

    
por 29.02.2012 / 17:42
0

Com base na lista de processos, você entrou em um subshell. Se você digitar exit no shell em que você estava primeiro, deverá voltar para a sessão vi . Depois, você pode continuar editando em vi ou sair e executar um editor mais intuitivo e menos poderoso, como nano , como sugere o romainl.

    
por 29.02.2012 / 20:58
-1

A solução para o problema subjacente é usar nano ou Gedit, se você tiver acesso a uma GUI, em vez de vi ou vim . Vi e Vim são dois programas complexos e poderosos (relacionados) que não são adequados para iniciantes.

Certamente é útil aprender os fundamentos do Vi (m) se você pretende gastar muito tempo codificando no Linux (ou em outro lugar), mas não se incomode em tentar aprendê-lo para editar algumas linhas a cada lua azul. / p>

A solução para o problema imediato é:

$ sudo killall vi

que vai matar todas as instâncias em execução de vi depois de solicitar sua senha.

Depois de terminar, use os mesmos comandos usados, mas substitua vi por nano , que é muito menos poderoso e muito mais intuitivo com o menu na parte inferior.

$ sudo nano /etc/ssh/sshd_config
    
por 29.02.2012 / 17:50

Tags