Cygwin: CD para caminhos do Windows facilmente

2

No Windows, os caminhos são (excessivamente) longos, por isso é comum arrastar e soltar de alguns links para o terminal ou copiar e colar caminhos de gerenciadores de arquivos. É possível colocar no arquivo init do shell uma função como

cdw() { cd "'cygpath -u $1'"  }

Agora, temos uma versão do Windows de cd . Supondo que "C: \ Arquivos de Programas" esteja no seu clipe, você pode digitar:

cdw " CTRL + v "

e CD lá. Eu concordo com você, citando é chato: cdw CTRL + v (sem aspas duplas) seria o assassino cd .
Isso é fácil no Bash explorando o comando history , como mostrado aqui . Mas eu uso zsh , onde a emissão de history não retorna o último comando (ou seja, history em si). Por tentativa e erros, eu criei esta função:

cdw(){
  print -s 
  set $(fc -l -1 | tail -2 | head  -1)
  shift 2
  p='cygpath -u "$*"'
  cd "$p"
}

Funciona, mas parece muito complicado. Eu me pergunto se você pode encontrar uma solução mais elegante que a minha.

    
por antonio 14.12.2014 / 15:17

1 resposta

1

Esse hack da história é uma maneira muito estranha de resolver esse problema, e é bem frágil. Não funcionará com alguns caracteres que sejam válidos em nomes de arquivos do Windows, como parênteses.

Há uma maneira muito mais fácil de usar para um caminho do Windows colado. Em vez de colá-lo no editor de linha, chame o utilitário getclip (que é em cygutils-extra nos últimos versões do Cygwin ).

cdw () {
  cd "$(getclip)"
}
cd "'getclip'"/../foo

Você pode, às vezes, sair sem as aspas duplas, mas nem sempre, por exemplo se um nome de arquivo contiver dois espaços consecutivos.

Se você quiser editar o caminho, vincule uma chave a expand-or-complete-prefix , por exemplo digite "'getclip'" e pressione Esc Tab :

bindkey '\e\t' expand-or-complete-prefix

Outra abordagem é vincular uma chave para inserir o conteúdo entre aspas da área de transferência.

insert-quoted-clipboard-content () {
  local text=${(q)$(getclip)}
  BUFFER=${BUFFER:0:$CURSOR}$text${BUFFER:$CURSOR:}
  ((CURSOR += #text))
}
zle -N insert-quoted-clipboard-content
bindkey '^X^V' insert-quoted-clipboard-content
    
por 21.12.2014 / 00:59

Tags