Minha configuração Vim inclui plugins que tentam lidar com projeto atual, etiquetas construção, etc . Isso é bastante útil para minha programação diária no Vim, mas é irritante quando eu uso o Vim para algumas edições rápidas, como:
- editar uma mensagem de confirmação do git;
- edite um comando shell quando digito Ctrl+xCtrl+ezsh ou bash;
- etc.
Também não gosto dos --noplugins
dois, pois ainda quero tirar proveito de alguns plug-ins no modo de edição rápida, como surround, easy-motion e muitos outros.
Então, eu quero ter algum "modo leve" (ou "modo rápido"), no qual alguns dos plugins serão ignorados, mas não todos.
Minha primeira ideia foi ter algum argumento especial da linha de comando, que eu analisaria no vimscript, mas uma pesquisa rápida mostra que atualmente é impossível no vimscript (a propósito, muito triste).
Minha segunda idéia é definir alguma variável de ambiente ao executar o vim, assim:
$ VIM_LIGHT_MODE=1 vim
Isso funciona no git:
$ git config --global core.editor 'VIM_LIGHT_MODE=1 vim'
Mas se eu fizer EDITOR='VIM_LIGHT_MODE=1 vim'
e digitar Ctrl+xCtrl+eo shell, ele não funcionará:
edit-command-line:13: command not found: VIM_LIGHT_MODE=1
Então eu tentei isso:, EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
mas também falha:
vim': -c: line 1: syntax error: unexpected end of file
(Para ser honesto, este parece particularmente estranho, parece que eu entendi mal como exatamente $EDITOR
é usado e ficarei feliz se alguém explicar o que está acontecendo aqui)
Todos os outros experimentos falharam também.
O único truque que consigo pensar é definir alguns servername
, como:
$ vim --servername VIM_LIGHTWEIGHT_MODE
E depois faça o check- v:servername
in do vimscript, mas este é um truque total : não é para isso que serve o servername.
Então, existe uma maneira mais limpa de alcançar o que eu quero?
fonte
env
:EDITOR='env VIM_LIGHT_MODE=1 vim'
.vim
comovim -u .vimrc-light
.env
tudo, meu shell-fu ainda está muito fraco. Considere escrever como resposta, para que eu possa aceitá-lo.Respostas:
Existem (pelo menos) duas possibilidades:
use
env
:use
vim
com outro arquivo de inicialização, diga.vimrc-light
:fonte
Embora a resposta aceita seja certamente melhor, eu gostaria de discutir
EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
. O problema aqui é queEDITOR
é invocado com argumentos, e os argumentos passados parabash -c
não são encaminhados automaticamente paravim
. Você precisa usar"$@"
:No entanto, o primeiro argumento após o comando in
bash -c
é$0
, do qual não faz parte$@
, portanto, você precisa usar um argumento de espaço reservado:Com essas armadilhas, não é uma boa opção, mas é viável mesmo assim.
fonte
Na verdade, sua primeira idéia é possível, de uma maneira elegante também. Você pode criar um comando definido pelo usuário e, em seguida, chamar o vim com a
+
sintaxe.Basta definir um comando de usuário personalizado em seu
.vimrc
arquivo, da seguinte maneira:A partir da linha de comando, você pode iniciar o vim da seguinte forma:
Eu usei isso no meu
.vimrc
para anotações fáceis, assim:Isso permite chamá-lo com isso
vim +Note
. Em seguida, crie um apelido de shell norc
arquivo shells , para permitir chamadas ainda mais fáceis. No meu.bashrc
arquivo, alias os comandos vim acima, como este:Solução de amostra
No seu caso, você pode escrever algo como estas no seu
.vimrc
arquivo:Em seguida, teste o modo leve como desejar, por plug-in ou grupos de plug-ins, etc ... usando uma
if
instrução vim semelhante a esta em seu.vimrc
arquivo:Coisas a Nota
!
comando after vimcommand!
significa que isso substituirá quaisquer comandos definidos da mesma forma com o mesmo nome. Isto é preferível.CustomUserCommandName
DEVE ter a primeira letra maiúsculag:
o usos:
ou com qualquer escopo que atenda às suas necessidades.fonte