Saya mencoba memetakan sebagai menambahkan baris di bawah ini ke .vimrc, tetapi tidak berhasil. Saya memeriksa .vimrc dimuat oleh Vim.
map <Alt-D> <C-D>
apakah ada kesalahan dalam pemetaan ini?
Saya mencoba memetakan sebagai menambahkan baris di bawah ini ke .vimrc, tetapi tidak berhasil. Saya memeriksa .vimrc dimuat oleh Vim.
map <Alt-D> <C-D>
apakah ada kesalahan dalam pemetaan ini?
encoding
perubahan Anda setelah pemetaan berjalan, apa yang Anda dapatkan dari tombol Alt mungkin tidak cocok dengan apa yang Anda tetapkan pada awalnya.
Jawaban:
Untuk pengguna Mac di luar sana: untuk memetakan ALT + hjkl, gunakan karakter asli yang dihasilkan (cari tahu karakter mana yang menggunakan kombinasi saat dalam mode INSERT), misalnya dengan keyboard saya, saya mendapatkan:
<ALT+j> ==> ª
<ALT+k> ==> º
dan seterusnya. Solusi ditemukan di sini di StackOverflow.
Saya menggunakan ini untuk memindahkan baris ke atas dan ke bawah dengan ALT + k \ j, menggunakan ini di .vimrc saya:
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
seperti yang dijelaskan di sini .
Semoga bermanfaat, selamat menikmati Vim :)
LAMPIRAN OLEH Dylan_Larkin (2019): Untuk ini bekerja pada Mac, " Gunakan Option sebagai Meta Key " harus diaktifkan OFF di Terminal-> Preferences> Keyboard
cat
. Cukup ketik cat
dan di dalam jendela kucing kombinasi tombol yang Anda inginkan. Menemukan bahwa alt + brackets adalah 'dan “di mac saya.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
untuk melihat output <Ak> dan <Aj> sebelum Anda mengonfigurasi pemetaan. Dalam kasus saya <Aj> adalah ∆
dan <Ak> adalah˚
Use Option as Meta Key
atau di profil iTerm ⌥ key to Esc+
akan berperilaku seperti cara tradisional (seperti di Linux / Unix). Jadi Anda tidak perlu menyetel ke Vim peta <^[j>
, cukup petakan ke <A+j>
atau <M+j>
dan itu berfungsi.
:help key-notation
menjelaskan format apa yang perlu digunakan untuk memetakan kunci yang berbeda. Dalam kasus alt, Anda dapat menggunakan salah satu <A-
atau <M-
. Jadi pemetaan Anda akan menjadi
map <M-d> <C-d>
Saya juga merekomendasikan menggunakan nore
varian :map
(misalnya, noremap
) kecuali Anda secara eksplisit ingin mengizinkan sisi kanan dievaluasi ulang untuk pemetaan.
<A-d>
. Anda mungkin perlu mengubah pengaturan terminal Anda agar mengirim <A-d>
sebagai <Esc>d
.
Saya tidak yakin apakah "mungkin" lagi. Silakan baca pembaruan di bawah ini.
Ya, Anda bahkan bisa di terminal vim, tetapi tidak ada jawaban nyata yang mencakup semua . Pada dasarnya Anda harus mengikuti dua langkah:
Pastikan <M-d>
notasi ada, dan petakan dengan tepat apa yang diinput terminal Anda ( ^[
adalah karakter escape):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Petakan sesuatu ke kombinasi yang baru Anda "buat":
noremap <M-d> :echo "m-d works!"<cr>
Memahami cara kerjanya, Anda dapat memperluas "trik" ini ke kombinasi "aneh" lainnya, misalnya, saya menggunakan rayap, dan vim tidak mengenali <S-F1>
, menggunakan cat I get ^[[1;2P
. Kemudian, di vimrc saya, saya lakukan:, execute "set <S-F1>=\e[1;2P"
dan kemudian saya bisa memetakannya ke apa saja.
Catatan: Saya tidak tahu mengapa, tetapi untuk beberapa orang menggunakan \<Esc>
karya, bukan \e
.
Pembaruan (Februari 2016)
Bergantung pada istilah agar terminal Anda berjalan, mungkin Anda bisa ... di sebagian besar terminal, "alt + h", misalnya, dipetakan ke ^[h
, yaitu: "escape + h". Sehingga bisa menimpa kunci. Saya baru saja mencoba (lagi) dan tampaknya berhasil, tetapi saya yakin ini adalah implementasi yang sangat buggy dan rawan kesalahan.
Namun demikian, untuk yang cukup berani, inilah plugin eksperimental:
execute "set...
barang, Anda bisa langsung menggunakan set <M-d>=^[d
. Ini ^[
sebenarnya adalah karakter pelarian yang dimasukkan C-v-Esc
. Ini diperlukan di rxvt / urxvt, tetapi xterm seharusnya tidak memerlukan perlakuan khusus. Info lebih lanjut tentang topik ini di vim wiki .
Map Alt Key di Vim di Mac OSx:
Mulailah dengan melihat kode kunci yang dikirim terminal Anda ke vim:
$ sed -n l
^[[1;9D
Dalam contoh di atas, saya menjalankan perintah dan menekan Alt + Left.
Ini ^[[1;9D
adalah urutan yang lolos dikirim ke vim, sehingga kita dapat menggunakannya untuk pemetaan kita.
map <Esc>[1;9D
Option
tombol kiri ( ⌥
) dikonfigurasi seperti Esc+
di iTerm2, saya dapat memetakan alt+q
untuk keluar dari vim: nnoremap <silent> <Esc>q :qa!<cr>
Terminal Anda mungkin tidak mengirimkan Alt-D "dengan benar". Anda dapat menggunakan CV untuk benar-benar mendapatkan escape sequence yang sebenarnya dikirim ke Vim dan menggunakannya untuk membuat pemetaan Anda. Yaitu, edit .vimrc Anda dan ganti yang sebenarnya dengan mengetikkan urutan berikut "CV Alt-D" sehingga Anda akan memiliki urutan escape yang benar di vimrc Anda. Itu tidak akan berfungsi jika terminal Anda tidak mengirim apa pun ke vim.
Terminal saya akan menghasilkan ^[x
perintah (misalnya untuk alt-x). Apa yang membuatnya bekerja di dalam Vim adalah skrip kecil dari vim.wikia.com ini :
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Tambahkan ke .vimrc untuk memperbaiki semua pemetaan kunci alt.
nnoremap <Esc>j :m .+1<CR>==
dan serupa ...
Halo, setelah tidak ada solusi yang baik setelah bertahun-tahun menguji semua hal di atas di mac, saya terus mencari.
Inilah solusi saya:
Untuk membuat kombinasi tombol termasuk Alt Anda harus mendeklarasikan kombinasi di preferensi> keyboard dan menggunakan kombinasi itu di file setup vim (centang opsi gunakan sebagai tombol meta).
Keluarannya harus berupa karakter yang tidak biasa (tidak a
misalnya) sehingga Anda tidak menimpa karakter biasa.
Dalam contoh di bawah ini, Anda harus bisa cukup vim dengan ALT-Up.
vim pengaturan:
pengaturan mac: