Я попытался сопоставить с добавлением строки ниже в .vimrc, но это не сработало. Я проверил, что .vimrc загружен Vim.
map <Alt-D> <C-D>
есть ли ошибка в этом сопоставлении?
Я попытался сопоставить с добавлением строки ниже в .vimrc, но это не сработало. Я проверил, что .vimrc загружен Vim.
map <Alt-D> <C-D>
есть ли ошибка в этом сопоставлении?
encoding
изменения после выполнения сопоставления, то, что вы получаете от клавиш Alt, может не совпадать с тем, что вы изначально установили.
Ответы:
Для пользователей Mac: для сопоставления ALT + hjkl используйте вместо этого настоящий сгенерированный символ (выясните, какой символ с помощью комбинации в режиме INSERT), например, с моей клавиатурой я получаю:
<ALT+j> ==> ª
<ALT+k> ==> º
и так далее. Решение найдено здесь, на StackOverflow.
Я использовал это для перемещения строк вверх и вниз с помощью 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 :)
ДОПОЛНЕНИЕ ПО Dylan_Larkin (2019): Для этого , чтобы работать на Mac, « Использование опции как Meta Key » должна быть включена OFF в Terminal-> Настройки-> Клавиатура
cat
. Просто введите cat
в окне кошки нужную комбинацию клавиш. Выяснилось, что alt + скобки - это 'и «на моем Mac.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
для просмотра вывода <Ak> и <Aj> перед настройкой сопоставления. В моем случае <Aj> есть, ∆
а <Ak>˚
Use Option as Meta Key
или в профиле iTerm ⌥ key to Esc+
будет вести себя как обычно (как в Linux / Unix). Таким образом, вам не нужно устанавливать в Vim карту <^[j>
, просто сопоставьте ее <A+j>
или, <M+j>
и она работает.
:help key-notation
описывает, какой формат необходимо использовать для сопоставления различных ключей. В случае alt вы можете использовать либо <A-
или <M-
. Итак, ваше отображение будет
map <M-d> <C-d>
Я также рекомендовал бы использовать nore
вариант :map
(например, noremap
), если вы явно не хотите разрешить переоценку правой части для сопоставлений.
<A-d>
. Вероятно, вам нужно изменить настройки вашего терминала, чтобы он отправлял <A-d>
как <Esc>d
.
Я больше не уверен, что это «возможно». Пожалуйста, прочтите обновление ниже.
Да, вы можете даже в терминальном 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". Так он мог перезаписывать ключи. Я только что попробовал (снова), и, похоже, это сработало, но я считаю, что это очень ошибочная и подверженная ошибкам реализация.
Тем не менее, для достаточно смелых есть экспериментальный плагин:
execute "set...
вещей вы можете просто использовать напрямую set <M-d>=^[d
. На ^[
самом деле это escape-символ, введенный с C-v-Esc
. Это было необходимо в rxvt / urxvt, но xterm не нуждается в особой обработке. Больше информации по этой теме в вики vim .
Клавиша Alt на карте в Vim на Mac OSx:
Начните с просмотра кода ключа, который ваш терминал отправляет в vim:
$ sed -n l
^[[1;9D
В приведенном выше примере я выполнил команду и нажал Alt + Left.
Это ^[[1;9D
экранированная последовательность, отправляемая в vim, поэтому мы можем использовать ее для нашего сопоставления.
map <Esc>[1;9D
Option
клавишей ( ⌥
), настроенной как Esc+
в iTerm2, я мог alt+q
бы выйти из vim: nnoremap <silent> <Esc>q :qa!<cr>
Ваш терминал может некорректно передавать Alt-D. Вы можете использовать CV, чтобы фактически получить фактическую escape-последовательность, отправленную в Vim, и использовать ее для создания вашего сопоставления. Т.е. отредактируйте свой .vimrc и замените фактический, набрав следующую последовательность «CV Alt-D», чтобы у вас была правильная escape-последовательность в вашем vimrc. Это не сработает, если ваш терминал ничего не отправляет в vim.
Мой терминал будет выдавать ^[x
команды (например, для alt-x). Что заставило его работать внутри Vim, так это небольшой скрипт с 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.
Привет, после того, как после многих лет тестирования всего вышеперечисленного на Mac хорошего решения не было, я продолжил поиск.
Вот мое решение:
Чтобы создать комбинацию клавиш, включая Alt, вы должны объявить комбинацию в настройках> клавиатура и использовать эту комбинацию в файле установки vim (отметьте опцию использования как мета-клавишу).
Вывод должен быть необычным символом ( a
например, нет), чтобы вы не переопределяли обычный символ.
В приведенном ниже примере у вас должно получиться довольно сильно работать с ALT-Up.
Настройка vim:
настройка Mac: