no seu arquivo principal .vimrc:
source otherVimScriptFilePath.vim
depois é só colocar sua declaração de variável nesse arquivo:
" otherVimScriptFilePath.vim
let whoami = "user1"
Gostaria de modificar meu .vimrc
para ler o valor de uma variável de um arquivo externo. Como posso fazer isso?
Especificamente, um amigo e eu compartilhamos um repositório git com nossos arquivos .vim
, mas há algumas pequenas diferenças no que queremos em nossas configurações. Portanto, a maior parte do arquivo é comum, mas usamos instruções if para determinar se devemos carregar seções específicas do usuário, assim:
let whoami = "user2"
if whoami == "user1"
...
Depois de verificar o controle comum .vimrc
fora da fonte, cada um de nós precisa alterar a atribuição let whoami
para que nossa própria seção seja carregada. Em vez disso, gostaria de manter um arquivo separado, que pode ser diferente para cada um de nós, e do qual o vim carregará esse valor de variável.
Talvez outro ângulo sobre isso seja: O vim irá ler automaticamente todos os arquivos no meu diretório .vim
? Se sim, cada um poderia colocar um link simbólico chamado username.vim, e linkar para um arquivo externo que seria diferente para cada um de nós.
Para responder à última pergunta, os arquivos em ~/.vim
não são carregados automaticamente, mas todos os arquivos em ~/.vim/plugin
são.
Desde que fiz esta pergunta, criei outro caso de uso para carregar um arquivo externo: ajustes específicos da máquina.
Como posso ou não precisar fazer ajustes em uma determinada máquina, estou usando um try/catch
para carregar o arquivo externo; se não houver tal arquivo, eu deixo falhar silenciosamente.
" If there are any machine-specific tweaks for Vim, load them from the following file.
try
source ~/.vimrc_machine_specific
catch
" No such file? No problem; just ignore it.
endtry
Você pode fazer com que seu ~ / .vimrc carregue outro arquivo usando o comando :source
. Por exemplo, cada um poderia colocar seus comandos únicos em ~ / .myvimrc e carregar esses comandos com
source ~/.myvimrc
Ou, como você estava pensando, cada um poderia colocar seu nome no arquivo assim:
let user = "user1"
e coloque isso no seu ~ / .vimrc:
source ~/.myvimrc
if user == "user1"
" do this
elseif user == "user2"
" do that
else
echo "Invalid user"
endif
Em vez de colocar seus nomes em arquivos, você pode usar $ USER como akira sugerido ou definir user
usando whoami
, assim:
let user = substitute(system('whoami'), '\n', '', '')
A função substitute () é necessária porque a saída de system () geralmente tem um '\ n' no final.
o nome do usuário que efetuou login está disponível na variável de ambiente $ USER. você pode acessar essa variável facilmente:
:echo $USER
então, é só usar
execute "silent! source vimrc." . $USER
no seu vimrc e coloque as configurações específicas do usuário em
vimrc.joe
ou qualquer que seja seu nome de login
Não sei qual é a aparência do seu vimrc, portanto, isso pode não ser viável, mas se houver grandes partes compartilhadas por você e seu amigo, convém separá-lo em plug-ins separados. Você pode adicionar arquivos ao diretório ~/.vim/plugin
para que eles sejam carregados na inicialização. (Eles estão carregados em ordem alfabética - use :scriptnames
para verificar.)
Dessa forma, você pode ter um vimrc completamente único, mas todas as suas configurações comuns estão em plug-ins. Se você dividi-los logicamente, isso facilita compartilhar com os outros também.