Фон
Я использую VIM как на MacOS, так и на Windows, только с одной настройкой vimrc
А вот одна из моих облегченных привязок клавиш:
map <leader>cmd:exec has("mac")==1? ':!open -a terminal' : ':!start cmd'
Задача
Однако, это не работает так, как я думал: нажмите <leader>cmd
и без , нажав клавишу ввода, после чего появится cmd или терминал.
На самом деле происходит целая строка отображения
exec has("mac")==1? ':!open -a terminal' : ':!start cmd'
просто появляется в режиме ex и ждет, пока я нажму клавишу ввода, чтобы запустить себя.
Насколько я знаю, если вы используете exe "your cmd string"
в настройке ключа сопоставления, вам не нужно ставить <cr>
после него, но почему, когда вы используете тройной оператор, он ведет себя по-другому?
Попробуйте
Так что я положил в строку, как
map <leader>cmd:exec has("mac")==1? ':!open -a terminal<cr>' : ':!start cmd<cr>'
vim говорит мне:
![enter image description here](https://i.stack.imgur.com/QRTkd.png)
(Кроме того, я не могу понять, почему <cr>
в ``
следует экранировать, не правда ли, строка в ``
остается первоначальным значением?)
Итак, я изменил следующее:
map <leader>cmd:exec has("mac")==1? ':!open -a terminal\<cr\>' : ':!start cmd\<cr\>'
Но он снова появляется в режиме ex.
Любые решения, пожалуйста?