Прекратить вставлять комбинации горячих клавиш после мета/лидерной клавиши

На MacVim у меня есть довольно неприятный случай, для которого у меня пока нет решений.

В режиме вставки, если я наберу , (моя ключевая клавиша), а затем нажму CMD-S в попытке сохранить, он в конечном итоге вставит <t_<fa>X> после запятой.

Я не знаю, почему и что это за текст, но есть ли способ остановить его вставку?


person Jonathan Dumaine    schedule 23.05.2013    source источник
comment
Также я хотел бы добавить, что я не хочу менять ключ лидера с запятой. Я к этому привык и у меня много биндов.   -  person Jonathan Dumaine    schedule 24.05.2013
comment
Вы можете ввести команду :map <leader><d-s>, чтобы увидеть, к чему привязана эта комбинация клавиш.   -  person David Brown    schedule 24.05.2013
comment
В режиме вставки, если вы наберете ,, он должен вставить запятую. Я что-то упускаю?   -  person mihai    schedule 24.05.2013
comment
@DavidBrown Проблема не в том, что CMD-S, в частности, к чему-то привязан. Нажатие CMD и любая клавиша вставит некоторые странные символы после того, как я нажму запятую. То же самое и с чем-то вроде :map ‹D-d› — у него нет никаких отображений, но когда я нажимаю эту комбинацию, vim вставляет в мой файл буквальный текст ‹D-d›.   -  person Jonathan Dumaine    schedule 26.05.2013
comment
@mihai Да, , вставляет запятую. Проблема в том, что после запятой вставляется странный текст <t_<fa>X>.   -  person Jonathan Dumaine    schedule 26.05.2013
comment
глупый вопрос, что такое клавиша CMD на клавиатуре Mac? у нас есть эта клавиша на обычной клавиатуре?   -  person Kent    schedule 31.05.2013
comment
@Kent mac делает все клавиши-модификаторы с помощью команды вместо управления. Таким образом, CMD-S сохраняется, тогда как в Windows или Linux это <C-S>. Что касается того, что на обычной клавиатуре это та же кнопка, что и клавиша Windows (она сопоставлена ​​с клавишей-модификатором 4, я думаю, в Linux)   -  person FDinoff    schedule 31.05.2013
comment
@JonathanDumaine, можешь опубликовать свой vimrc?   -  person FDinoff    schedule 31.05.2013
comment
@JonathanDumaine, к сведению: code.google.com/p/macvim/issues /detail?id=388   -  person Kent    schedule 31.05.2013
comment
@Кент, и, видимо, ты нашел проблему быстрее, чем я   -  person FDinoff    schedule 31.05.2013


Ответы (1)


Я нашел ваш gvimrc здесь, на github

В первом разделе у вас есть куча маппинга. Последние две строки показаны ниже.

if has("gui_macvim")
  ...

  " Adjust viewports to the same size
  map <Leader>= <C-w>=
  imap <Leader>= <Esc> <C-w>=
endif

Проблема в этом отображении

imap <Leader>= <Esc> <C-w>=

Macvim берет ваш ключ <leader> и ждет, не появится ли следующий, если =. Он не выполняет сопоставление и, поскольку сопоставление было неправильным, вставляет символы в буфер. Кажется, MacVim печатает <d-s> как <t_<fa>X>. Таким образом, <t_<fa>X> помещается в буфер, когда нажимается <CMD-S>.

Чтобы остановить это, у вас не должно быть никаких сопоставлений в режиме вставки, которые используют ваш лидерный ключ, потому что через некоторое время MacVim будет ждать другого символа, чтобы определить, печатаете ли вы сопоставление или пытаетесь что-то вставить.

Изменить: Кент также нашел ссылку на средство отслеживания проблем MacVim issue 388 который описывает эту проблему.

person FDinoff    schedule 31.05.2013
comment
Я бы сказал, что решение состоит в том, чтобы использовать Vim как обычно: старайтесь как можно больше избегать режима вставки и :w из обычного режима. Настаивание на использовании Vim, как если бы это был просто еще один Sublime или TextMate, ни к чему не приведет OP. - person romainl; 31.05.2013
comment
Интернет-детективы спешат на помощь! Много лет назад я начал с шаблонных настроек vimrc. О чудо, они были источником моего разочарования. Спасибо за находчивость, удаление этих сопоставлений остановило отображение этой последовательности. - person Jonathan Dumaine; 01.06.2013