Я намагався зіставити як додавання рядка нижче до .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, потрібно вимкнути " Використовувати параметр як мета-ключ " у Terminal-> Preferences-> Keyboard
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>нотація існує, і точно відображте те, що вводить ваш термінал ( ^[це символ входу ):
$ 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>, використовуючи кота, якого я отримую ^[[1;2P. Потім, у моєму vimrc я роблю:, execute "set <S-F1>=\e[1;2P"і тоді я можу зіставити його з чим завгодно.
Примітка: Я не знаю чому, але для деяких людей, які використовують \<Esc>твори замість \e.
Оновлення (лютий 2016 р.)
Залежно від терміналу, на якому працює ваш термінал, можливо, ви могли б ... у більшості терміналів, наприклад, "alt + h" відображається на ^[h , тобто: "escape + h". Тож він міг перезаписати ключі. Я щойно спробував (ще раз), і, здається, це працює, але я вважаю, що це дуже схильна до помилок реалізація.
Тим не менше, для досить сміливих, ось експериментальний плагін:
execute "set...матеріалу ви можете просто безпосередньо використовувати set <M-d>=^[d. Це ^[насправді символ втечі, введений за допомогою C-v-Esc. Це було необхідно в rxvt / urxvt, але xterm не потребує спеціального лікування. Більше інформації на цю тему у вікі vim .
Карта Alt Key у 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. Ви можете використовувати резюме, щоб фактично отримати фактичну послідовність виходу, надіслану Vim, і використати її для створення вашого відображення. Тобто відредагуйте файл .vimrc та замініть фактичний, набравши наступну послідовність "CV Alt-D", щоб у вас була правильна послідовність виходу у ваш 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.
nnoremap <Esc>j :m .+1<CR>==та подібні ...
Привіт, після хорошого рішення після багаторічного тестування на Mac вище, я продовжував шукати.
Ось моє рішення:
Щоб створити комбінацію комбінацій клавіш, включаючи Alt, вам потрібно оголосити комбінацію в налаштуваннях> клавіатура та використовувати цю комбінацію у файлі налаштування vim (позначте опцію використання як мета-клавіші).
Вихідні дані повинні мати незвичний символ (наприклад, немає a), щоб ви не замінили звичайний символ.
У наведеному нижче прикладі ви зможете цілком попрацювати з ALT-Up.
налаштування vim:

налаштування mac:
