Eu sei que o Vim permite um modo de servidor cliente ( :h clientserver
): é possível transformá-lo em um servidor que receberá alguns comandos e os executará e como um cliente que enviará os comandos para o servidor.
Entendo como funciona, mas não consigo imaginar um uso prático desse recurso: em quais casos é útil e qual fluxo de trabalho pode ser criado usando esse recurso?
Portanto, minha pergunta é simples: qual é o uso do modo de servidor cliente do Vim?
(Lembro novamente que minha pergunta não é sobre como fazê-lo funcionar ou como funciona, mas por que usá-lo.)
clientserver
statox
fonte
fonte
Respostas:
Antes do recurso recente de canal / tarefa do Vim 7.4, o recurso cliente-servidor era a única maneira de fazer uma compilação em segundo plano decente - sem nenhuma dependência do Python. Começamos a compilação como um trabalho em segundo plano e, quando termina, ele notifica de volta ao vim, graças ao canal cliente-servidor, que terminou.
Também é usado indiretamente por "plugins" como o pyclewn para integrar um depurador ao vim. Na verdade, o pyclewn usa o recurso + netbeans (criado sobre o + clientserver). Outros projetos notáveis usam essa interface do netbeans para integrar o vim a um IDE - consulte
:h netbeans-intro
.Também é usado por alguns plugins de teste, como o vimrunner, para executar testes no Vim a partir da linha de comando. Eu o uso para testar meus plugins no travis.
Também me lembro de sincronizar meus cliques na interface xdvi com o código fonte do LaTeX, graças ao + clientserver.
fonte
Meu uso disso é um pouco mais simplista (e talvez comum) do que o de Luc Hermitte.
Se você iniciar uma instância do gvim com esta compilada (e já existe há muito tempo, por exemplo, nas principais distribuições linux como Fedora e Debian), ela inicia no modo servidor. Eu enfatizei "gvim" porque o que estou prestes a descrever não parece se aplicar a uma
vim
instância singular em um terminal da GUI (embora eu suponha que poderia ser se você usar o paramater apropriadamente).De qualquer forma, você pode abrir qualquer arquivo de qualquer lugar nessa instância do gvim com
gvim --remote [file path]
(sem nenhum--servername
especificado). Sou fã disso porque não navego muito diretamente no sistema de arquivos com o vim; em vez disso, uso um navegador de arquivos ortodoxo (comandante da meia-noite) - ou melhor, pilhas delas abertas em locais diferentes, poismc
são leves e permitem que várias capas de esquema de cores simplifiquem a diferenciação entre elas (então, eu tenho duas ou três abertas separadamente) guias em pelo menos um terminal da GUI). No entanto, acho que o mesmo princípio se aplicará a qualquer navegador de arquivos que permita alguma forma de tecla de atalho personalizada à qual você possa associargvim --remote %f
. Comomc
eu o tenho no menu do usuário, o F2 + e o arquivo selecionado / realçado são enviados para a instância gvim.Isso fica um pouco melhor: se você abrir uma segunda instância do gvim, digamos, no monitor nº 2 da mesma área de trabalho ou em uma área de trabalho separada, e talvez um esquema de cores diferente nessa, e desta vez explicitamente
--servername foo
, você poderá enviar arquivos para essa instância em vez de:Algo que pode ou não ser útil, dependendo do escopo do que você está fazendo, etc.
fonte
less
, que é instantâneo e um chave para sair) e possivelmente enviá-los para aplicativos que não sejam o vim que também possuem um modo remoto como este (muitas coisas acontecem agora, incluindo outros "editores" que eu às vezes uso para deixar guias empilhadas de cabeçalhos para visualização e também navegadores da web) . Dito de outra forma, eu diria que navegar os fs com o vim parece ser uma solução para não usarmc
e--remote
,;)Desenvolvimento incorporado. Muitas vezes, no desenvolvimento incorporado, você tem um soquete IP, mas espaço limitado no disco rígido local, ou nenhuma memória não volátil, ou várias outras coisas. Você pode iniciar um servidor na placa incorporada e, em seguida, utilizá-lo no seu computador de desenvolvimento e ter todas as suas configurações e tags definidas localmente.
fonte
Escrevi minha tese de mestrado usando Vim, LaTeX e BibTeX. Para gerenciar minhas referências BibTeX, usei um programa chamado JabRef . O JabRef possui um pequeno recurso interessante, onde você pode conectá-lo a uma instância do servidor Vim e, em seguida, pode "enviar" a referência BibTeX do JabRef ao documento LaTeX que você está editando no Vim.
fonte
Meu fluxo de trabalho é semelhante ao que os goldilocks disseram em sua resposta. Eu uso o
:terminal
recurso do vim8 em combinação com a--remote
opção. Eu mantenho o layout de 2 janelas no vim. Código na janela esquerda e terminal à direita. Eu uso a janela direita (terminal) para executar compilações, navegar no sistema de arquivos e abrir arquivos na instância atual do vim (a partir do terminal). Esse fluxo me permite operar com muito menos envolvimento do mouse.Eu uso gvim e icewm (qualquer gerenciador de janelas deve fazer)
Iniciar uma instância gvim
Dentro do gvim, terminal aberto na divisão vertical
Na janela do terminal, divida
Você pode criar aliases para esses comandos longos no seu .zshrc / .bashrc e encurtá-los ao seu gosto.
Com esse fluxo de trabalho, raramente saio da minha instância do gvim e raramente uso o mouse.
fonte