Eu já vi muitos desenvolvedores usando esse comando para definir a opção para vi. Eu nunca entendi o uso real disso?
Ao usar comandos bash, que ajuda a mudança para o vi fornece?
Eu já vi muitos desenvolvedores usando esse comando para definir a opção para vi. Eu nunca entendi o uso real disso?
Ao usar comandos bash, que ajuda a mudança para o vi fornece?
Respostas:
Ao definir sua edição de linha de leitura como emacs (o padrão) ou vi ( set -o vi
), você essencialmente padroniza seus comandos de edição, através do shell e do editor de sua escolha 1 .
Portanto, se você deseja editar um comando no shell, use os mesmos comandos 2 que usaria se estivesse no seu editor de texto. Isso significa que apenas ter que lembrar uma sintaxe de comando e (se isso não fosse vantagem o suficiente) provavelmente tornaria sua edição em ambos os ambientes mais rápida e menos propensa a erros ...
Você pode alavancar ainda mais esse relacionamento no modo vi puxando qualquer comando do histórico do shell, pressionando Escapepara entrar no modo de comando e, em seguida v, pressionando , o que abrirá seu $ EDITOR com o comando carregado para uma edição mais complexa com todo o poder do vim. Depois de concluir a edição do comando, :wqo seu comando é executado de volta no seu shell.
1. Supondo, é claro, que você use o Emacs ou Vi / m como seu editor.
2. Ou, mais precisamente, um subconjunto ...
set -o vi
que a maioria das pessoas não conhece. Isso é especialmente verdadeiro se você deseja emitir o mesmo comando várias vezes com argumentos diferentes (como vários comandos de linha de comando).
set -o vi
. Na configuração padrão de set -o EMACS
, Cx, Ce exibirá uma janela do emacs (ou a $EDITOR
, se configurada) na qual você pode editar o comando antes de executá-lo.
O modo Vi é uma enorme melhoria de usabilidade se você estiver usando um cliente SSH móvel como o ConnectBot para Android.
Isso ocorre devido a uma dependência reduzida das chaves modificadoras.
O Vim é muito mais fácil de usar com um teclado virtual em um smartphone ou tablet do que ... qualquer outra coisa, incluindo os métodos de edição nativos incorporados na interface do usuário do Android. Ironicamente, é mais fácil editar fontes C com o Vim em uma sessão SSH do que editar, digamos, uma mensagem instantânea com o próprio widget de edição da plataforma para esse fim.
O modo Shell vi traz um benefício semelhante.
Permite editar itens na linha de comando usando os modos e operações do vi.
Um exemplo ajudará a tornar muito mais claro:
Você digita cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
mas você receber um erro - você deve ter digitado file1.txt
nãofile1.xt
Sem essa opção, pressione a seta para cima e, em seguida, pressione a seta para a esquerda e deixe repetir por ... 35 vezes, até chegar ao .xt
e digitar o extra t
. Total de pressionamentos de tecla: 37 .
Com esta opção configurada, você pode (por exemplo) pressionar a seta para cima uma vez e, em seguida, Escapar para o modo de comando, 0 para ir para o início da linha e, em seguida, /xt[return]
chegar ao xt
e, em seguida, pode digitar i
para o modo de inserção e digitar t ausente. Isso pode parecer insanamente complicado em alguns aspectos, mas se você é um usuário do vim, esse comando já é muito conhecido. Total de pressionamentos de tecla: 9
Alt+B
s ou a Ctrl+Alt+]
.
no modo Emacs, para que isso não pareça um exemplo forte para mim.
Up
, Ctrl+Alt+]
, .
, Right
, t
, Enter
= 8. Vi modo: Up
, F
, .
, a
, t
, Enter
= 7. :)
Esc
também está lá, é um empate.
Não tenho certeza se há uma vantagem direta. Sou vi
usuário há mais de 20 anos. Também sou screen
usuário por mais tempo e de outros programas que usam vi
chaves. É natural para mim preferir definir o modo "vi" no bash. Mas também trabalho em centenas de servidores no meu trabalho, a maioria está definida no modo "emacs" padrão. Então, eu preciso usar os dois modos. Mas é realmente apenas uma questão de preferência.
ssh
ing. Obviamente, isso não ajuda quando estou usando uma máquina localmente que não possui minhas .bashrc
coisas.
A principal vantagem é a edição modal da sua linha de comando. Se você conhece o Vim e gosta de sua filosofia, os benefícios devem ser óbvios. Se você tiver experiência com isso, a memória muscular do seu dedo fará com que você edite seus comandos do bash nas velocidades da luz.
Nota : se você não gosta de edição modal, ainda deve aprender a tirar proveito do modo emacs (padrão). Aqui estão alguns atalhos de teclado bacanas que funcionarão em qualquer processo readline
, como bash
.
Se você se acostumar vi
, define-o no modo vi como seu editor de shell. Essa seria a razão óbvia. A outra é quando o bash
não está disponível por padrão em alguns sistemas operacionais (principalmente UNIX como AIX, Solaris), para que o recurso de histórico de shell não está disponível, por isso, a forma como você obter os comandos passados, definindo o editor shell para vi
, e Esc, Ctrl+ Kou Ctrl+L
Ele permite que você navegue e edite facilmente a linha de comando usando os atalhos do vim, por exemplo, mova rapidamente para uma palavra à direita e exclua uma palavra.
Pelos atalhos padrão, quando você precisa ir até o final da linha, precisa Ctrl+ e, enquanto que com set -o vi
apenas pressiona $
, como no vim.
Provavelmente atrasado para a festa, mas para mim o uso do modo vi é mais importante ao criar scripts interativos. Por exemplo
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
um exemplo muito simples do que poderia ser bastante complicado .. usando o ESCkvcoloca em uma sessão vi, na qual você pode modificar o script e, em seguida, :wq
ele é executado.
vi
modo, mas é um mau exemplo do código do bash. (1) Usar a saída ls
como entrada para qualquer outro tipo de processamento é uma má ideia. (2) A $(…)
sintaxe para substituição de comando é amplamente considerada mais legível que a `…`
sintaxe. (3) Você sempre deve citar variáveis do shell, a menos que tenha um bom motivo para não fazê- lo e com certeza sabe o que está fazendo.