Могу ли я отобразить Alt в Vim?

Я попытался отобразить, добавив ниже строку в .vimrc, но она не работает. Я проверил, что .vimrc загружается Vim.

map <Alt-D> <C-D>

есть ли какая-либо ошибка в этом отображении?

Ответ 1

Для пользователей Mac: для сопоставления ALT + hjkl вместо этого используйте реальный сгенерированный символ (выясните, какой символ использует комбинацию в режиме INSERT), например, с моей клавиатуры я получаю:

<ALT+j> ==> ª
<ALT+k> ==> º

и так далее. Решение найдено здесь на Кару.

Я использовал это для перемещения строк вверх и вниз с помощью ALT + k\j, используя это на моем .vimrc:

nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==

inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi

vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv

как объяснено здесь.

Надеюсь, что это полезно, наслаждайтесь Vim :)

ADDENDUM BY Dylan_Larkin (2019): чтобы это работало на Mac, "Использовать опцию как мета-ключ" необходимо выключить OFF в Terminal-> Preferences-> Keyboard

Ответ 2

:help key-notation описывает, какой формат необходимо использовать для сопоставления различных ключей. В случае alt вы можете использовать либо <A-, либо <M-. Таким образом, ваше сопоставление будет

map <M-d> <C-d>

Я также рекомендую использовать вариант nore :map (например, noremap), если вы явно не хотите, чтобы правая сторона была переоценена для сопоставлений.

Ответ 3

Я не уверен, что это возможно. Пожалуйста, ознакомьтесь с приведенным ниже обновлением.

Да, вы можете даже в терминале vim, но нет реального ответа на все. Вы в основном должны выполнить два шага:

  • Убедитесь, что существует нотация <M-d>, и точно укажите, что входы вашего терминала (^[ - символ escape):

    $ cat
    ^[d
    $
    
    " in your .vimrc
    execute "set <M-d>=\ed"
    " you have to use double quotes!
    
  • Сопоставьте что-то с вашей новой "созданной" комбинацией:

    noremap <M-d> :echo "m-d works!"<cr>
    

Понимая, как это работает, вы можете расширить этот "трюк" на другие "странные" комбинации, например, я использую термит, а vim не распознает <S-F1>, используя cat, я получаю ^[[1;2P. Затем в моем vimrc я делаю: execute "set <S-F1>=\e[1;2P", а затем я могу сопоставить его с чем угодно.

Примечание: Я не знаю почему, но для некоторых людей, использующих \<Esc>, работает вместо \e.


Обновление (февраль 2016)

В зависимости от terminfo ваш терминал запускается, может быть, вы могли бы... в большинстве терминалов, например, "alt + h" отображается на ^[h, а именно: "escape + h". Поэтому он может перезаписывать ключи. Я только что попробовал (снова) и, похоже, работает, но я считаю, что это очень неудачная и подверженная ошибкам реализация.

Тем не менее, для достаточно храбрых здесь экспериментальный плагин:

Ответ 4

Карта Alt Key в Vim на Mac OSx:

Начните с просмотра key code, который ваш терминал отправляет в vim:

$ sed -n l
^[[1;9D 

В приведенном выше примере я запустил команду и нажал Alt + Left.

^[[1;9D - это экранированная последовательность, отправляемая в vim, поэтому мы можем использовать ее для нашего отображения.

map <Esc>[1;9D 

Ответ 5

Использование:

map <A-D> <C-D>

См. :help key-notation.

Ответ 6

Ваш терминал может не передавать "правильно" Alt-D. Вы можете использовать C-V, чтобы фактически получить фактическую последовательность escape-отправки в Vim и использовать ее для создания вашего сопоставления. Т.е. отредактируйте свой .vimrc и замените фактическое, введя следующую последовательность "C-V Alt-D", чтобы вы получили правильную последовательность эвакуации в своем vimrc. Это не сработает, если ваш терминал ничего не отправит в vim.

Ответ 7

Мой терминал создавал команды ^[x (например, для alt-x). Что заставило его работать внутри Vim, этот маленький script из vim.wikia.com:

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Добавьте в .vimrc, чтобы исправить все сопоставления клавиш alt.

Ответ 8

Здравствуйте, после неудачного решения после нескольких лет тестирования на Mac, я продолжал искать.

Вот мое решение:

Чтобы создать комбинацию клавиш, включая Alt, вы должны объявить комбинацию в настройках> клавиатуры и использовать эту комбинацию в установочном файле vim (отметьте опцию use в качестве мета-ключа).

Вывод должен быть необычным символом (например, a), чтобы вы не переопределяли обычный символ.

В приведенном ниже примере вы должны быть в состоянии справиться с ALT-Up.

настройка vim: vim setting

настройка Mac: mac setting