Navegação simplificada no terminal

4

Eu sei que os IDEs são a onda do futuro, mas eu sempre me encontro codificando em vim em um terminal Linux. Cão velho. Novos truques.

De qualquer forma, a navegação se torna um desafio quando se lida com nomes longos de pacotes. Por exemplo, em meus terminais, posso ver meu caminho atual como parte do prompt. Às vezes estou aqui:

/foo/bar/src/com/example/yomama/

e eu quero ir para:

/foo/bar

Eu tenho alguns aliases bacanas:

alias 1down="cd .."
alias 2down="cd ..;cd .."
alias 3down="cd ..;cd ..;cd .."
alias 4down="cd ..;cd ..;cd ..;cd .."
alias 5down="cd ..;cd ..;cd ..;cd ..;cd .."

Então, se eu digitar 4down , bam! Eu estou em /foo/bar .

Aconteceu o pensamento de que, como sei que meu diretório de trabalho atual é:

/foo/bar/src/com/example/yomama/

Eu também posso ir de / para ir para / foo / bar.

Por isso, seria legal implementar também uma função 2up, já que é mais fácil contar quantas para subir. Antes de começar a escrever um script de shell para isso, estou me perguntando se há alguma ferramenta de shell que possa oferecer uma solução mais elegante. Pontos extras se alguém souber de uma linha que pode implementar Nup .

PS: Eu já tenho

alias bar = "cd /foo/bar"

Estou procurando uma solução mais genérica aqui.

PPS: Eu sempre achei que seria muito legal ter um $PWD clicável no prompt. Então eu poderia apenas clicar em bar e cd to /foo/bar . Mas talvez eu deva apenas passar para um IDE gráfico e calar a boca já; -)

EDITAR:

Há alguma confusão sobre o que minha definição de Nup é.

O Nup deve levá-lo ao enésimo local do caminho na sua PWD a partir do root. Então, se você está atualmente em / a / b / c / d / e / f / g / h / i, o 4up o levará para / a / b / c / d. Da mesma forma, 5down vai te dar / a / b / c / d.

Basicamente, você pode navegar pelo caminho sem ter que trabalhar com esforço 'cd ..' várias vezes, ou especificando 'cd / a / b / c / d'.

    
por rouble 23.08.2013 / 17:40

3 respostas

0

Eu aprecio todos os comentários e respostas. Eu usei meu macarrão esta manhã e pensei:

alias 1up='cd /$(echo $PWD | cut -f 2 -d /)'
alias 2up='cd /$(echo $PWD | cut -f 2,3 -d /)'
alias 3up='cd /$(echo $PWD | cut -f 2,3,4 -d /)'
alias 4up='cd /$(echo $PWD | cut -f 2,3,4,5 -d /)'
alias 5up='cd /$(echo $PWD | cut -f 2,3,4,5,6 -d /)'

Note que as aspas simples são essenciais para que o bash não expanda pwd no alias. Eu poderia escrever uma função para isso, mas 5up e 5down são tudo que eu preciso.

Comentários apreciados. Um desejo que tenho é usar o bash puro para analisar as variáveis do caminho em vez de usar o corte - mas tenho trabalho real a fazer; -)

    
por 28.08.2013 / 18:53
2

Com duas funções no seu arquivo .bashrc , você pode usar a pilha de diretórios para alguma navegação

function down ()
{
  if [[ -z "$1" ]]
  then
   n=1
  else
   n=$1
  fi

  for ((i=0; i<$n; i++ ));
  do
      pushd .. > /dev/null
  done;
}
function up ()
{
  if [[ -z "$1" ]]
  then
   n=1
  else
   n=$1
  fi

  for ((i=0; i<$n; i++ ));
  do
      popd > /dev/null
  done;
#  dirs -c  # To clear directory on up motion
}

Onde você pode usar down N e up N , respectivamente.

Uso da amostra:

~/tmp/bash/dir1/dir2/dir3$ down 4
~/tmp$ up 2
~/tmp/bash/dir1$ up 2
~/tmp/bash/dir1/dir2/dir3$ down 2
~/tmp/bash/dir1$ down 1
~/tmp/bash$ up 3
~/tmp/bash/dir1/dir2/dir3$

Claro, você não pode usar up N antes de usar down N . Coisas inesperadas podem acontecer ou mensagens de erro podem aparecer.

    
por 23.08.2013 / 19:46
0

Esta não é exatamente a resposta que você pediu, mas algo em que você pode estar interessado é o comandante da meia-noite , que deve estar disponível em qualquer repositório de distribuição Linux. mc usa palavrões como o console vim; Ele fornece uma interface de navegação de arquivos de dois painéis com um prompt de comando na parte inferior ; você pode navegar pelos diretórios usando as teclas de seta e digitar comandos (para navegar no histórico de comandos, use ctrl-n e ctrl-p). Ctrl-o alterna a interface para cima e para baixo - quando está ativo, você está em um subnível normal no mesmo diretório. Você pode iniciar o vim de dentro dele, e se você definir EDITOR=vim em seu ambiente e desmarcar a opção "usar edição interna" em Opções-> Configuração, pressionar F4 com um arquivo destacado irá validá-lo. Vale a pena aprender a usar e conta como um dos meus programas favoráveis de todos os tempos.

Em um terminal X, a interface pode ser usada com o mouse; você também pode usar um mouse em um VT se instalar gpm .

    
por 23.08.2013 / 19:07