Vim
é o meu editor de texto preferido quando programa e, portanto, sempre encontro um problema particularmente irritante.
Freqüentemente, quando preciso salvar o buffer rapidamente e continuar com outras tarefas diversas, faço as tarefas típicas
:w
No entanto, eu - o que parece ser mais de 50% do tempo - sempre consigo capitalizar isso :w
. Naturalmente, o vim grita comigo porque W
é um comando inválido
E492: Not an editor command: W
Minha pergunta é como alguém pode usar o comando colon-command no vim . Particularmente, você poderia exemplificar como criar um alias W
para w
.
Estou ciente do processo para mapear chaves para determinados comandos . Infelizmente, não é isso que estou procurando.
:W
você pode mapear uma chave para realizar o salvamento. Se você está acostumado a algum programa que salva com Ctrl-s, existem esses mapeamentos de $ VIM / mswin.vim:" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
Respostas:
Para deixar a conclusão intocada, tente usar
, ele será substituído
W
na linha de comando porw
, mas somente se não for seguido nem precedido pelo caractere da palavra,:W<CR>
será substituído por:w<CR>
, mas:Write
não será. (Observe que isso afeta quaisquer comandos que correspondam, incluindo aqueles que você não pode esperar, por exemplo, o comando:saveas W Z
será substituído por:saveas w Z
, portanto, tenha cuidado com isso.)Atualizar
Aqui está como eu escreveria agora :
Como uma função:
Isso verifica se o tipo de comando é
:
e o comando éW
, portanto, é mais seguro do que apenascnoreabbrev W w
.fonte
:%s/W/foo/g<CR>
:%s/w/foo/g<CR>
:cnoreabbrev <expr> W getcmdtype()==':'&&getcmdline()=~#'^W'?'w':'W'
Com pesquisas complementares, descobri que alguém fez quase a mesma pergunta que eu.
fará o truque.
Esteja ciente de que, como Richo aponta, o comando do usuário deve começar com uma letra maiúscula.
fonte
:command AliasName string of command to be aliased
command
argumentos, como-nargs
,-complete
etc:Q!
ou:W!
?:command W w
no.vimrc
arquivo.Acho que o mapeamento da
;
chave:
seria uma solução melhor e o tornaria mais produtivo para digitar outros comandos.fonte
t
ouf
, geralmente é possível usar;
para ir para a próxima ocorrência. É possível mapear com segurança o contrário, mesmo que você tenha mapeado ponto-e-vírgula para dois pontos. Não haverá um loop de alias.nnoremap : ;
A melhor solução envolve escrever uma função personalizada para lidar com abreviações que ocorrem apenas no início da barra de comandos.
Para isso, adicione o seguinte arquivo vimrc ou qualquer outro lugar.
Algumas abreviações úteis do material de origem onde encontrei este material:
fonte
string()
que faz a mesma coisa que a suaSingle_quote()
.Talvez você queira mapear uma de suas teclas de função (F1..F12) para: w? Em seguida, coloque isso no seu .vimrc:
(ctrl-o no modo de inserção muda temporariamente para o modo normal).
fonte
Suponha que você queira adicionar um alias para o comando tabnew no gvim. você pode simplesmente digitar o seguinte comando no arquivo .vimrc (se não estiver na pasta inicial, crie um)
fonte
:saveas t example
para ser substituído com:saveas tabnew example
O mais seguro e fácil é um plug-in como o cmdalias.vim ou meu vim-alias da atualização recente que leva em consideração
:sil(ent)(!)
ou:redi(r)
,'<,'>
para a seleção visual atual,fonte