How do I map <cmd>-<shift>-f to run Ack plugin in Vim?

9

1

I'm new to vim and I'm trying to map a key combo for running the Ack plugin found here: https://github.com/mileszs/ack.vim

I want to map cmd-shift-f to run the Ack command :Ack. I've added the following to ~/.vimrc

nmap <D-F> :Ack<space>

It doesn't work. What am I doing wrong?

I'm using vim 7.3 within iTerm 2 on MacOS X.

jordelver

Posted 2012-02-07T21:28:07.110

Reputation: 1 781

Answers

4

The problem is that within <...> notation mappings, case is (mostly) insensitive, so you have to explicitly state you want to map with the shift key. Try this:

nmap <D-S-F> :Ack<space>

Heptite

Posted 2012-02-07T21:28:07.110

Reputation: 16 267

That still doesn't work. It's weird because nmap <C-F> :Ack<space> works for <ctrl><shift>-f. But it doesn't work with <cmd> – jordelver – 2012-02-07T22:44:17.457

1Hmm, interesting. nmap <D-F> :Ack<space> does work in MacVim, but not in the terminal. Looks like cmd is not recognised in a terminal. – jordelver – 2012-02-07T22:57:09.533

1

And finally, according to this page: http://unix.stackexchange.com/questions/29665/in-vim-how-to-map-command-right-and-command-left-to-beginning-of-line-and-e

You can only use <cmd> key mappings in a GUI Vim such as MacVim. I've decided to just go with <ctrl>-f for now.

– jordelver – 2012-02-07T23:17:49.723

3

Or.. you could think about doing it this way:

nmap <D-F> :Ack <space>

You don't need to mention the shift & this still only triggers with a capital F (so although shift isn't mentioned in the binding, you still have to press it).

This works for me at least.

Jason F

Posted 2012-02-07T21:28:07.110

Reputation: 131

Worked for me! My use case: nnoremap <silent> <D-D> <C-w>s – aymericbeaumet – 2016-02-23T11:04:08.863