Ho provato a mappare come aggiungendo la riga sottostante a .vimrc, ma non funziona. Ho controllato che il .vimrc sia caricato da Vim.
map <Alt-D> <C-D>
c'è qualche errore in questa mappatura?
Ho provato a mappare come aggiungendo la riga sottostante a .vimrc, ma non funziona. Ho controllato che il .vimrc sia caricato da Vim.
map <Alt-D> <C-D>
c'è qualche errore in questa mappatura?
encodingmodifiche apportate dopo l'esecuzione della mappatura, ciò che ottieni dai tasti Alt potrebbe non corrispondere a ciò che hai impostato inizialmente.
Risposte:
Per gli utenti Mac là fuori: per la mappatura ALT + hjkl, usa invece il carattere reale generato (scopri quale carattere usando la combinazione mentre sono in modalità INSERT), ad esempio con la mia tastiera ottengo:
<ALT+j> ==> ª
<ALT+k> ==> º
e così via. Soluzione trovata qui su StackOverflow.
L'ho usato per spostare le linee su e giù con ALT + k \ j, usando questo sul mio .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
come spiegato qui .
Spero sia utile, divertiti con Vim :)
ADDENDUM DI Dylan_Larkin (2019): Perché funzioni su un Mac, " Usa opzione come metatasto " deve essere disattivato in Terminale-> Preferenze-> Tastiera
cat. Digita semplicemente cate all'interno della finestra del gatto la combinazione di tasti che desideri. Ho scoperto che alt + parentesi è 'e "sul mio Mac.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n lper vedere l'output di <Ak> e <Aj> prima di configurare la mappatura. Nel mio caso <Aj> è ∆e <Ak> è˚
Use Option as Meta Keyo sul profilo iTerm ⌥ key to Esc+si comporterà come tradizionalmente (come su Linux / Unix). Quindi non è necessario impostare su Vim la mappa <^[j>, ma mapparla semplicemente su <A+j>o <M+j>e funziona.
:help key-notationdescrive quale formato deve essere utilizzato per mappare chiavi diverse. Nel caso di alt, puoi usare o <A-o <M-. Quindi la tua mappatura sarebbe
map <M-d> <C-d>
Suggerirei anche di utilizzare la norevariante di :map(ad esempio noremap) a meno che non si desideri esplicitamente consentire la rivalutazione del lato destro per le mappature.
<A-d>. Probabilmente devi modificare le impostazioni del tuo terminale in modo che invii <A-d>come <Esc>d.
Non sono sicuro che sia più "possibile". Si prega di leggere l'aggiornamento di seguito.
Sì, puoi anche in terminal vim, ma non c'è una vera risposta a tutti . Fondamentalmente devi seguire due passaggi:
Assicurati che la <M-d>notazione esista e mappa esattamente ciò che il tuo terminale immette ( ^[è il carattere di escape):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Associa qualcosa alla tua nuova combinazione "creata":
noremap <M-d> :echo "m-d works!"<cr>
Capendo come funziona, puoi espandere questo "trucco" ad altre combinazioni "strane", per esempio, sto usando la termite e vim non riconosce <S-F1>, usando il gatto che ottengo ^[[1;2P. Quindi, nel mio vimrc faccio:, execute "set <S-F1>=\e[1;2P"e quindi posso mapparlo su qualsiasi cosa.
Nota: non so perché, ma per alcune persone che usano \<Esc>works invece di \e.
Aggiornamento (febbraio 2016)
A seconda del terminale su cui gira il tuo terminale, forse potresti ... nella maggior parte dei terminali, "alt + h", per esempio, è mappato ^[h, che è: "escape + h". Quindi potrebbe sovrascrivere le chiavi. Ho appena provato (di nuovo) e sembra funzionare, ma credo che sia un'implementazione molto buggata e soggetta a errori.
Tuttavia, per i più coraggiosi, ecco un plugin sperimentale:
execute "set...cose, puoi semplicemente usare direttamente set <M-d>=^[d. In ^[realtà è un carattere di escape immesso con C-v-Esc. Questo era necessario in rxvt / urxvt, ma xterm non dovrebbe aver bisogno del trattamento speciale. Maggiori informazioni su questo argomento nel wiki di vim .
Tasto Alt mappa in Vim su Mac OSx:
Inizia visualizzando il codice chiave che il tuo terminale sta inviando a vim:
$ sed -n l
^[[1;9D
Nell'esempio sopra, ho eseguito il comando e ho premuto Alt + Left.
La ^[[1;9Dè la sequenza sfuggito di essere inviato a vim, in modo che possiamo utente che per la nostra mappatura.
map <Esc>[1;9D
Optiontasto sinistro ( ⌥) configurato come Esc+in iTerm2, potrei mappare alt+qper uscire da vim: nnoremap <silent> <Esc>q :qa!<cr>
Il tuo terminale potrebbe non trasmettere "correttamente" l'Alt-D. Puoi usare CV per ottenere effettivamente la sequenza di escape effettiva inviata a Vim e usarla per creare la tua mappatura. Cioè, modifica il tuo .vimrc e sostituisci il reale digitando la seguente sequenza "CV Alt-D" così avrai la corretta sequenza di escape nel tuo vimrc. Non funzionerà se il tuo terminale non invia nulla a vim.
Il mio terminale produrrebbe ^[xcomandi (ad esempio per alt-x). Ciò che lo ha fatto funzionare all'interno di Vim è stato questo piccolo script da 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
Aggiungi a .vimrc per correggere tutte le mappature dei tasti alt.
nnoremap <Esc>j :m .+1<CR>==e simili ...
Ciao dopo nessuna buona soluzione dopo anni di test di tutto quanto sopra su Mac, ho continuato a cercare.
Ecco la mia soluzione:
Per creare una combinazione di tasti che includa Alt devi dichiarare la combinazione nelle preferenze> tastiera e usare quella combinazione nel file di installazione di vim (controlla l'opzione usa come meta tasto).
L'output deve essere un carattere insolito (no aad esempio) in modo da non sovrascrivere un carattere normale.
Nell'esempio seguente dovresti essere in grado di vimare abbastanza con ALT-Up.
impostazione vim:

impostazione mac:
