Como usar o Sublime sobre SSH

236

Estou tentando usar o Sublime Text 2 como editor quando faço o SSH no servidor de trabalho e estou perplexo. Encontrei este http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (entre muitos outros posts) que parece que pode ajudar, mas não o sigo exatamente , particularmente com quais valores devo colocar para a variável remota na linha 5. Defino "/ Users / path / to / local / copy" no meu diretório raiz local, mas não sei se isso está certo ou se há mais façam. Alguma ideia? Estou no OSX10.8

thumbtackthief
fonte
12
Eu achei mais fácil usar osxfuseesshfs no meu mac montar diretórios remotos localmente e depois editar via ST2.
AGS
Existe um popular plug-in ST2 para sftp. Aqui está uma explicação adicional de um sistema ao qual acredito que a AGS está se referindo: superuser.com/questions/134140/… . Eu tive um problema com o carregamento automático no logon e precisei usar um script de logon alternativo feito com o Platypus. Eu também precisava de uma versão melhor do macfuse - vou ver se consigo encontrar o link se você estiver interessado.
lawlist
Com o Snow Leopard (10.6.8), eu precisava de um núcleo atualizado para o MacFuse (ou seja, macfuse-core-10.5-2.1.9.dmg) - aqui está o link para onde eu o consegui: blog.urbaninsight.com/2011 / 04/18 /… Se você estiver interessado, isso deve lhe poupar muitas dores de cabeça.
usar o seguinte código
Não seria ao vivo, e talvez menos adequado para assistir arquivos de registro e outras coisas, mas muitas vezes a configuração do gitolito pode valer a pena. Apenas git pull e você tem tudo para brincar. Então, novamente, muitas pessoas têm internet rápida hoje em dia e não sentiriam o atraso do netwok ... Tudo depende da sua configuração.

Respostas:

161

Existem três maneiras:

Além disso, em teoria, você pode instalar o X11 no servidor remoto e executar o Sublime por meio do encaminhamento VNC ou X11, mas não faria sentido fazer isso.

Mikko Ohtamaa
fonte
1
Veja também pergunta relacionada superuser.com superuser.com/questions/581292/...
Mikko Ohtamaa
11
A combinação SSHFS / osxfuse funcionou para mim! Obrigado. Por outro com este problema: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief
alguém com plugin sftp pode usar ferramentas como shells interativos e substituir como no emacs?
Edmondo1984 31/07/2013
@ Edmondo1984 basta usar um terminal real para isso #
Mikko Ohtamaa
1
O SFTP sublime realmente permite editar arquivos remotamente, mas sem o painel do projeto ST (portanto, não vá para qualquer lugar ) ou faz algo como um rsync. Há um teste gratuito para testá-lo.
Wernight 20/09/13
102

Você pode usar o rsub , inspirado no TextMate rmate. A partir da descrição:

O Rsub é uma implementação do recurso 'rmate' do TextMate 2 para o Sublime Text 2, permitindo que arquivos sejam editados em um servidor remoto usando encaminhamento / encapsulamento de porta SSH.

Aqui está um bom tutorial sobre como configurá-lo corretamente.

ubik
fonte
2
Também concordo que fazer o rsub funcionar é muito fácil e permite o sudo, o que é ótimo. Eu tive alguns problemas em fazê-la direito trabalho, mas isso teve a resposta para isso também: stackoverflow.com/questions/18938950/...
Ross R
7
assinale esta resposta, em vez da primeira vez que este é livre
Theodore
O guia funcionou perfeitamente, mesmo para um noob terminal total como eu. Obrigado!
Henrik
66

Estou no Windows e usei 4 métodos: SFTP , WinSCP , Unison e Sublime Text no Linux com encaminhamento X11 sobre SSH para Windows (sim, você pode fazer isso sem configurações confusas e usando uma ferramenta gratuita).

A quarta maneira é a melhor se você pode instalar o software em sua máquina Linux.

A quarta maneira:

MobaXterm

  1. Instale o MobaXterm no Windows
  2. SSH para sua caixa Linux do MobaXterm
  3. Na sua caixa Linux, instale o Sublime Text 3. Veja como fazer isso no Ubuntu
  4. No prompt de comando, inicie o sublime com subl
  5. É isso aí! Agora você tem texto sublime em execução no Linux, mas com a janela em execução na área de trabalho do Windows. Isso é possível porque o MobaXterm lida com o encaminhamento do X11 por SSH para você, para que você não precise fazer nada desagradável para fazê-lo funcionar. Pode haver um pequeno atraso, mas seus arquivos nunca estarão fora de sincronia, porque você os está editando diretamente na máquina Linux.

Nota: Ao chamar subl se houver reclamações sobre uma determinada biblioteca - certifique-se de instalá-las para chamar com êxito o sublimetext do mobaxterm.

Se você não pode instalar o software na sua caixa Linux, o melhor é o Unison. Por quê?

  • É grátis
  • É rápido
  • É confiável e não se importa com o editor que você usa
  • Você pode criar listas de ignorados personalizadas

SFTP

Instalação: instale o pacote de texto sublime SFTP . Este pacote requer uma licença.

  1. Criar uma nova pasta
  2. Abra-o como um projeto de texto sublime.
  3. Na barra lateral, clique com o botão direito do mouse na pasta e selecione Mapear Remoto.
  4. Edite o arquivo sftp-config.json
  5. Clique com o botão direito do mouse na pasta na etapa 1 e selecione download.
  6. Trabalhe localmente.

No sftp-config, costumo definir:

"upload_on_save": true,
"sync_down_on_open": true,

Isso, além de um terminal SSH na máquina, proporciona uma experiência de edição remota bastante uniforme.

WinSCP

  1. Instale e execute o WinSCP
  2. Vá para Preferências (Ctrl + Alt + P) e clique em Transferir e, em seguida, em Adicionar. Nomeie a predefinição.
  3. Defina o modo de transferência como binário (você não deseja conversões de linha)
  4. Defina a modificação do arquivo como "Sem alteração"
  5. Clique no botão Editar ao lado de Máscara de arquivo e configure seus arquivos e pastas de inclusão e exclusão (útil para quando você tem uma pasta .git / .svn presente ou deseja excluir a sincronização de produtos de compilação).
  6. Clique OK
  7. Conecte-se ao seu servidor remoto e navegue até a pasta de seu interesse
  8. Escolha uma pasta vazia na sua máquina local.
  9. Selecione as predefinições de configurações de transferência recém-criadas.
  10. Por fim, pressione Ctrl + U (Comandos> Manter o diretório remoto atualizado) e verifique se "Sincronizar ao iniciar" e "Atualizar subdiretórios" estão marcados.

A partir de então, o WinSCP manterá suas alterações sincronizadas.

Trabalhe na pasta local usando o SublimeText. Apenas verifique se Sublime Text está definido para adivinhar as terminações de linha do arquivo que está sendo editado.

Uníssono

Descobri que, se a árvore de origem é enorme (cerca de algumas centenas de MB com uma hierarquia profunda), o método WinSCP descrito acima pode ser um pouco lento. Você pode obter um desempenho muito melhor usando o Unison . O lado negativo é que o Unison não é automático (você precisa acioná-lo com um pressionamento de tecla) e requer que um componente do servidor esteja em execução na sua máquina Linux. O lado positivo é que as transferências são incrivelmente rápidas, são muito confiáveis ​​e ignorar arquivos, pastas e extensões é incrivelmente fácil de configurar.

Carl
fonte
+1 para o SFTP setuplink. Não sabia se o SFTP era um software Windows ou um pacote Sublime.
Kevin Meredith
Eu uso o sftp para ST2, PuTTY e um pouco do FileZilla para uma boa medida. É a melhor configuração que encontrei depois de experimentar várias. No entanto, não gosto de manter um conjunto de arquivos local. Eu prefiro muito o ST do que os editores de terminal, como o vi ou nano - fazer o ST3 no próprio servidor parecer um ótimo negócio. thx para a ponta -
Bosworth99
Se você é um usuário de cyberduck ( cyberduck.io/?l=en ), o sublimetext se integra muito bem.
sakurashinken
33

Como acompanhamento da resposta do @ ubik, aqui estão as três etapas simples (únicas) para obter o comando 'subl' funcionando no seu servidor remoto:

  1. [ Local ] Instale o rsubpacote no Sublime Text usando o Sublime Package Manager
  2. [ Local ] Execute o seguinte comando Bash (isso configurará um túnel SSH , que é o molho secreto do rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Servidor ] Execute o seguinte comando Bash no servidor remoto (isso instalará o comando shell 'subl'):

    sudo wget -O /usr/local/bin/subl https://raw.github.com/aurora/rmate/master/rmate; sudo chmod +x /usr/local/bin/subl

E pronto! Agora você está usando Sublime Text over SSH.

Você pode abrir um arquivo de exemplo no Sublime Text do servidor com algo como subl ~/test.txt

user456584
fonte
1
Eu continuo recebendo: /usr/local/bin/subl: connect: Connection refused /usr/local/bin/subl: line 200: /dev/tcp/localhost/52698: Connection refused Unable to connect to TextMate on localhost:52698. Pensamentos?
thumbtackthief
1
Sim: adicione -R 52698: localhost: 52698 ao seu comando ssh. Veja aqui: stackoverflow.com/questions/18938950/…
Ross R
Dica de Noob que achei útil: Lembre-se de ter o Sublime em execução na sua máquina local. Isso realmente inicia o servidor.
Magne
@RossR - isso não funciona. Mina se parece com isso: "RemoteForward 52698 127.0.0.1:52698 -R 52698: localhost: 52698" e ainda gera mesmo erro: "Não é possível conectar ao TextMate em localhost: 52698"
FooBar
1
o funcionamento acima, você só precisa reiniciar o servidor remoto posteriormente ou continuará recebendo o erro de conexão negada.
Ctf0
10

Estou no MacOS, e a maneira mais conveniente para mim é usar o CyberDuck , que é gratuito (também disponível para Windows). Você pode conectar-se ao seu sistema de arquivos SSH remoto e editar seu arquivo usando o editor local. O que o CyberDuck faz é baixar o arquivo para um local temporário no sistema operacional local e abri-lo com o seu editor. Depois de salvar o arquivo, o CyberDuck o envia automaticamente para o seu sistema remoto. Parece transparente como se você estivesse editando seu arquivo remoto usando o editor local. Os desenvolvedores do Cyberduck também fabricam o MountainDuck para montar sistemas de arquivos remotos.

Bizi
fonte
1
i upvoted, embora isso não funciona com sudo ... (arquivos que necessitem de acesso de superusuário para escrever)
Tiago Coelho
1
Veio postar esta solução exata. Contanto que você esteja usando o CyberDuck, é muito conveniente. No entanto, lembre-se de que ele só funciona enquanto o CyberDuck está em execução. Você também pode usar o mesmo método para abrir arquivos em outros editores, mas eu descobri que nem todos eles funcionarão de maneira confiável e podem perder a conexão ou mudar silenciosamente para salvar localmente, e não remotamente (por exemplo, Microsoft Excel). Nunca tive um único problema com isso usando o Sublime.
user5359531
8

Você pode tentar algo que eu tenho trabalhado chamado ' xeno '. Isso permitirá que você abra arquivos / pastas no Sublime Text (ou qualquer editor local mesmo) por uma conexão SSH e sincronize automaticamente as alterações na máquina remota. Ele deve funcionar em quase todos os sistemas POSIX (eu mesmo o uso no OS X para conectar-se a máquinas Linux e editar arquivos em Sublime Text). É gratuito e de código aberto. Eu adoraria algum feedback.

Para mais informações: é basicamente um mashup Git / SSH escrito em Python que permite editar arquivos e pastas em uma máquina remota em um editor local. Você não precisa configurar os módulos do kernel, não precisa ter uma conexão persistente, é tudo automático e não interfere no controle de origem existente, porque usa um repositório Git fora da área de trabalho. Além disso, como é construído no Git, é extremamente rápido e suporta a mesclagem automática de arquivos que podem estar mudando nas duas extremidades, ao contrário do SSHFS / SFTP, que apenas derruba todos os arquivos com registros de data e hora mais antigos.

havoc-io
fonte
E eu escrevi algumas postagens simples no blog com scripts e opções de configuração que tornam o ST2 + Xeno uma combinação incrível. Www.yeraze.com
Yeraze
5

Você pode usar o sftp para montar o diretório remoto na sua máquina de localização e, em seguida, basta abrir os arquivos usando o texto sublime da maneira que você faria normalmente.

Para montar o diretório remoto usando sftp, digite o seguinte no seu gerenciador de arquivos Linux;

sftp://user@remote_box.com:22/home/user/code_directory

Pode parecer lento, dependendo da velocidade da sua internet. Mas isso funcionou para mim.

David Okwii
fonte
5

Eu sei que isso é muito antigo, mas tenho uma maneira muito legal de fazer isso que vale a pena compartilhar.

O que é necessário no Conemu e no WinSCP . Estas são instruções simples

  1. Abra o WinSCP.exe e faça o login no servidor remoto desejado (eu
    achei importante fazer o login antes de anexar ...).

  2. Nas preferências do WinSCP - duas configurações para alterar. Escolha a interface do tipo Explorer e não o Commander - para que você não veja os arquivos locais. A menos que você queira (mas isso parece uma merda aqui). Configure o Sublime como seu editor padrão.

  3. Com o ConEmu aberto, clique com o botão direito do mouse na barra de guias e selecione a opção Attach to.... Uma caixa de diálogo será aberta com os aplicativos em execução. Escolha WinSCP e selecione OK. O ConEmu agora terá uma guia aberta com o WinSCP exibindo seus arquivos remotos.

  4. Clique com o botão direito na guia WinSCP e escolha New console.... Quando a caixa de diálogo for aberta, digite o caminho para o executável Sublime no seu sistema. Antes de pressionar Start, Na caixa que diz New console splitselecione o botão de opção to righte defina a porcentagem. Normalmente escolho 75%, mas você pode personalizá-lo ao seu gosto e pode ser alterado posteriormente.

    1. Agora você verá Sublime na mesma janela correndo à direita do WinSCP. No Sublime, no menu Exibir, escolha Sidebar->Hide Sidebare bam, agora você tem arquivos remotos exatamente da mesma maneira que faria localmente - com algumas ressalvas, é claro, que acompanham a edição de qualquer coisa remotamente. O WinSCP é extremamente rápido.

Eu tenho dois monitores - o navegador Chrome do monitor esquerdo, o monitor direito exibe o editor de código. Além disso ConEmu, crio outra guia e ssh no site em que estou trabalhando, para poder executar coisas como executar gulpou gruntremotamente e também manipular arquivos da linha de comando. Sério acelerou o desenvolvimento.

Aqui está uma captura de tela:

Captura de tela da instalação

dgo
fonte
5

Essa é a maneira mais fácil de editar localmente os arquivos que residem no host remoto onde você configurou anteriormente o ssh para o IP remoto

# issue on local box

sudo apt-get install sshfs   # on local host install sshfs ( linux )

# on local box create secure mount of remote directory

export REMOTE_IP=107.170.58.249 # remote host IP

sshfs myremoteuserid@${REMOTE_IP}:/your/remote/dir  /your/local/dir # for example

Feito !!!

Agora, no host local, basta começar a editar os arquivos ... quando você lista o diretório localmente, ele pode não listar nada até você subdividir ou listar um arquivo específico ... carregamento lento ... isso não afeta a edição dos arquivos

subl /your/local/dir/magnum_opus.go # local file edit using sublime text

então acima está realmente editando o arquivo remoto em

/your/remote/dir/magnum_opus.go  # remote file on box $REMOTE_IP

Para OSX ou Windows, veja este tutorial do pessoal do Digital Ocean

Scott Stensland
fonte
4

Outra solução para Mac semelhante ao osxfuse é usar apenas o cliente Transmit FTP da Panic Software, que permite montar uma pasta remota como um disco local. Ele suporta SFTP, que é muito seguro.

Gavster
fonte
Eu gosto muito dessa opção. A montagem deve permitir que você abra toda a unidade como um projeto sublime.
quer
3

Eu tenho trabalhado em um projeto chamado GiySync . Ele ainda precisa de algum trabalho, mas é de código aberto e eu o uso todos os dias há alguns anos. Também estou trabalhando em uma versão nativa do OS X que chamei GitSyncApp

No momento, é apenas o OS X, mas deve ser fácil adicionar suporte ao Linux e, possivelmente, ao Windows também.

Ele funciona assistindo a eventos do sistema de arquivos e usa o git para sincronizar uma pasta do projeto em sua máquina local e em um servidor.

Tentei outras soluções como osx fuse, Expand Drive, Transmit, várias soluções que usavam rsync, etc. Todas elas funcionam 'OK' para pequenos projetos, mas se você estiver trabalhando com muito código, elas não funcionaram para mim.

Muitas opções do sistema de arquivos fazem cache para melhorar o desempenho, o que é bom, até que não seja. Como se você estivesse trabalhando com outras pessoas e alguém alterasse os arquivos no servidor.

Eu também tive problemas se estivesse em uma rede lenta ou superficial onde acabaria com arquivos vazios. Ou arquivo que não foi sincronizado, o cache ficou estranho; espero que você tenha se comprometido recentemente. O uso do git resolve esse problema porque verifica a integridade de cada commit.

Dois recursos de bônus:

  1. Você acaba com uma confirmação para cada salvamento. Não é super útil, mas se você precisar voltar no tempo, pode.
  2. Funciona com qualquer editor de texto.
Jachin
fonte
0

Dependendo das suas necessidades exatas, você pode considerar usar o BitTorrent Sync. Crie uma pasta compartilhada no seu PC doméstico e no seu trabalho. Edite os arquivos no seu PC doméstico (usando o Sublime ou o que você quiser) e eles serão sincronizados automaticamente quando você salvar. O BitTorrent Sync não depende de um servidor central que armazena os arquivos (no Dropbox e similares), portanto, em teoria, você deve estar livre de quaisquer problemas devido a terceiros que armazenam informações confidenciais.

thedudeabides
fonte
0

Uma solução que funcionou muito bem para mim - edite localmente no Mac e sincronize o arquivo automaticamente com uma máquina remota

  1. Verifique se você tem um login sem senha na máquina remota. Caso contrário, siga estas etapas http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. crie um arquivo em ~ / Library / LaunchAgents / filesynchronizer.plist, com o seguinte conteúdo:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>filesynchronizer</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-avz</string> <string>/Users/USERNAME/SyncDirectory</string> <string>USERNAME@REMOTEMACHINE:~</string> </array> <key>WatchPaths</key> <array> <string>/Users/USERNAME/SyncDirectory</string> </array> </dict> </plist>

  3. Em uma janela do terminal, execute

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. É isso aí. Quaisquer alterações em qualquer arquivo no ~ / SyncDirectory serão sincronizadas com ~ / SyncDirectory na máquina remota. As alterações locais substituirão as alterações remotas.

Isso cria um trabalho launchd que monitora o SyncDirectory e, sempre que algo muda, o rsync é executado para sincronizar o diretório com a máquina remota.

Ran Locar
fonte
Esta é uma sincronização bidirecional?
mordido
Não; Somente local para máquina remota
Ran Locar
0

lsyncd parece ser uma boa alternativa para a abordagem sshfs. Se você usar "-day 0", funcionará em tempo real.

JLarky
fonte
0

Use o FileZilla

Isso se aplica a usuários de Mac e Windows (eu uso no Mac). Eu usei várias respostas listadas ao longo dos anos e descobri que o FileZilla atende bem às minhas necessidades ao editar arquivos em um host remoto ao qual tenho acesso SSH. Também é rápido de configurar.

  • Eu configuro uma nova conexão com o servidor
  • conectar ao servidor
  • clique com o botão direito do mouse no arquivo que gostaria de editar e selecionar View/Edit.

Isso abre meu editor padrão (Sublime), mas funcionará com qualquer editor que você tenha instalado.

  • Depois de salvar o arquivo, o Filezilla solicita automaticamente que eu pergunte se gostaria de "Carregar este arquivo de volta para o servidor", clique em "Sim" e ele será atualizado.
Ben Havilland
fonte