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?
encoding
modifiche 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 cat
e 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 l
per vedere l'output di <Ak> e <Aj> prima di configurare la mappatura. Nel mio caso <Aj> è ∆
e <Ak> è˚
Use Option as Meta Key
o 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-notation
descrive 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 nore
variante 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
Option
tasto sinistro ( ⌥
) configurato come Esc+
in iTerm2, potrei mappare alt+q
per 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 ^[x
comandi (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 a
ad 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: