Desvincular ⌘F e Remapear
Você pode "desvincular" (F (Comando + F ; escrito como <D-f>
no Vim) a partir do Editar > Encontre > Encontre ... item de menu com o comando :macmenu
do MacVim e, em seguida, mapeie-o com um comando normal :map
.
if has('gui_macvim')
macmenu Edit.Find.Find\.\.\. key=<nop>
map <D-f> /
endif
Este comando :macmenu
específico só é efetivo se você o colocar no seu ~/.gvimrc
, então as linhas acima devem ser colocadas lá.
A caixa de diálogo de localização do Mac OS X ainda será exibida se você chamar o próprio item de menu (clicando nele ou usando :emenu
).
Redefinir o item de menu
Uma abordagem alternativa é redefinir os próprios itens de menu. Isso seria inadequado se você quisesse vincular ⌘F a alguma função diferente (já que o item de menu Editar > Localizar > Localizar ... seria faça algo diferente de uma pesquisa!), mas pode ser aceitável, já que você só quer iniciar um estilo diferente de pesquisa.
Você pode usar variações no comando :menu
para redefinir o item de menu para ser (mais ou menos) equivalente a digitar /
:
if has("gui_macvim")
nmenu Edit.Find.Find\.\.\. /
vmenu Edit.Find.Find\.\.\. <C-C>/
imenu Edit.Find.Find\.\.\. <C-\><C-O>/
cmenu Edit.Find.Find\.\.\. <C-C>/
omenu Edit.Find.Find\.\.\. <C-C>/
endif
O melhor lugar para esses comandos é o ~/.gvimrc
(embora por razões ligeiramente diferentes do que o comando :macmenu
acima).
Esses comandos abrangem o modo normal, os modos visual e de seleção, o modo de inserção, o modo de comando e o modo de operador pendente.
Essa abordagem significa que pressionar ⌘F e selecionar o item de menu iniciará uma pesquisa baseada em /
(ou seja, o modo indicado pelo cursor logo após /
na área da linha de comando, em vez de usar o :promptfind
).
Colocação de Comando
Como observado em cada uma das sugestões acima, o posicionamento dos comandos é importante. Eles devem funcionar corretamente se você os colocar em ~/.gvimrc
. Mas alguns dos comandos também podem ser eficazes em outros contextos.
A maior influência na eficácia dos comandos de menu é a sua posição em relação ao fornecimento de $VIMRUNTIME/menu.vim
. Este arquivo contém os comandos que constroem os menus. Ele é automaticamente originado entre ~/.vimrc
e ~/.gvimrc
, mas também pode ser proveniente manualmente (por exemplo, ver :help console-menus
). A maioria dos comandos neste arquivo é protegida por uma instrução if para que eles sejam sempre executados apenas uma vez. Isso significa que você poderia obtê-lo manualmente e redefinir alguns dos itens de menu no seu .vimrc
para que você pudesse usar os itens de menu alterados nos modos de console e GUI.
Posicionamento de nmenu
,…
Os comandos da solução "Redefinir o item de menu" podem ser eficazes no seu ~/.vimrc
se você colocar source $VIMRUNTIME/menu.vim
antes deles. Se você não originar menu.vim
primeiro, suas definições serão sobrescritas se / quando forem originadas posteriormente (isto é, mais tarde em ~/.vimrc
; automaticamente, ao ativar o realce de sintaxe; automaticamente, antes de ~./gvimrc
para instâncias baseadas em GUI do Vim; ou manualmente, em um prompt :
).
A maioria das instâncias de GUI do Vim usa Edit.Find\.\.\.
para o item de menu, mas MacVim insere um submenu Find
na hierarquia para corresponder ao arranjo habitual do Mac OS X, portanto os comandos devem ser protegidos por has('gui_macvim')
(para que eles não causem erros se você usar seu arquivo de inicialização com uma compilação não-em MacVim do Vim).
Posicionamento de macmenu
O comando macmenu
só é efetivo no momento da inicialização. Você pode digitá-lo em um prompt :
, mas ele não altera nenhuma configuração se você usá-lo dessa maneira. Isso é mencionado em :help :macmenu
, mas perdi as primeiras vezes em que examinei a documentação:
This command must be used in a startup file, for example in "~/.gvimrc". It has no effect otherwise.
Em menu.vim
, depois que os itens de menu foram criados, alguns comandos macmenu
são usados para estabelecer as teclas de atalho padrão para os itens de menu e as "ações" de GUI que eles acionam. No entanto, ao contrário dos comandos de definição de menu no mesmo arquivo, os comandos macmenu
que estabelecem essas ligações não são protegidos de serem executados várias vezes. Isso significa que você pode usar os comandos macmenu
em ~/.vimrc
para estabelecer ligações / ações para itens de menu que não possuem ligações / ações padrão, mas você deve usar ~/.gvimrc
para modificar as ligações / ações estabelecidas em menu.vim
. Isso parece um pequeno bug na versão MacVim de menu.vim
.
Portanto, o único lugar (atualmente) válido para o comando macmenu
está em ~/.gvimrc
, após o último fornecimento de tempo de inicialização de menu.vim
. E novamente, algumas das hierarquias de menu são específicas para MacVim , então os comandos devem ser protegidos com has('gui_macvim')
.
Posicionamento de map <D-f>
A notação chave <D-…>
parece válida na maioria das compilações do Vim (embora provavelmente seja apenas utilizável em versões “Mac”). Portanto, você deve poder mapear com segurança as teclas de comando no seu ~/.vimrc
sem se preocupar em causar erros para outras compilações do Vim. Claro que, em MacVim , se você estiver mapeando uma chave que normalmente é um atalho de item de menu, você também terá que desvinculá-la do item de menu (o que significa um comando macmenu
em ~/.gvimrc
).