2009-12-11 8 views
17

sto cercando di creare due mappature che siano efficienti per me stesso:VIM: lettere di scelta rapida mappabili (non utilizzate)?

map X ddp 

che avevo uso per cancellare e incollare in un colpo solo.

map X "_dw 

Quale eliminerebbe una parola senza strappare in un registro.

Tuttavia, non voglio rompere nessuna scorciatoia esistente e utile, quindi mi chiedo quali chiavi potrei usare - qualche suggerimento? Sono troppo in subbuglio?

risposta

10

Ogni singolo carattere ASCII, maiuscolo e minuscolo, viene utilizzato per qualcosa in Vim. Quindi finirai per sovrascrivere qualcosa - scegli qualcosa che non usi. Potrebbe essere utile utilizzare un linguaggio comune per le proprie estensioni. Io uso una virgola leader, ad esempio:

map ,w :w!<CR> 
map ,e :e #<CR> 
imap ,, <ESC> 

(L'ultimo è particolarmente utile per me, perché ho praticamente mai bisogno di scrivere due virgole consecutive in modalità di inserimento, ed è bello non dover andare fino in . modo per il tasto Esc)

+0

Questa è davvero una buona idea, penso che la copierò. – hora

+0

Uhmm, no ... l'ho provato una volta, ... mi sono perso tra virgolette. – Rook

+3

Utilizzare invece di virgole con codice fisso sarebbe la soluzione preferita –

19

vim aiuto ha una sezione: egli map-tasti che

1.7 WHAT KEYS TO MAP         *map-which-keys* 

If you are going to map something, you will need to choose which key(s) to use 
for the {lhs}. You will have to avoid keys that are used for Vim commands, 
otherwise you would not be able to use those commands anymore. Here are a few 
suggestions: 
- Function keys <F2>, <F3>, etc.. Also the shifted function keys <S-F1>, 
    <S-F2>, etc. Note that <F1> is already used for the help command. 
- Meta-keys (with the ALT key pressed). |:map-alt-keys| 
- Use the '_' or ',' character and then any other character. The "_" and "," 
    commands do exist in Vim (see |_| and |,|), but you probably never use them. 
- Use a key that is a synonym for another command. For example: CTRL-P and 
    CTRL-N. Use an extra character to allow more mappings. 

See the file "index" for keys that are not used and thus can be mapped without 
losing any builtin function. You can also use ":help {key}^D" to find out if 
a key is used for some command. ({key} is the specific key you want to find 
out about, ^D is CTRL-D). 
+0

la pasta è stata modificata. – aehlke

+0

Se stai cercando i tasti di controllo e il loro significato, potresti volerli citare con^V. È possibile digitare: help^V^C per trovare l'aiuto per^C. (^ Q potrebbe funzionare su sistemi operativi giocattolo.) – Brian

2

Uhmm, no, non farlo. Quando crei i tuoi mapping cerca di non sovrascrivere nulla ... non tanto perché non usi il comando che stai sovrasprudendo, ma perché alcuni plugin che hai/o avresti forse usato.

E poi lo si sovrasta, e poi ci si deve preoccupare.

Personalmente, per comandi come quelli che hai dato come esempio, mi piace Ctrl + alcune combinazioni di tasti. Ce ne sono molti gratuiti in vim, e le lettere sul lato sinistro vicino a Ctrl ne fanno una bella coppia.

Btw, cosa stai cercando di fare con questi mapping ... Capisco il secondo (cancella parola per parola), ma il primo non ha senso per me. Cosa dovrebbe fare? Linee di trasposizione?

+0

In generale, gli autori di plugin dovrebbero usare 'normal!' E 'noremap'.(Ma non tutti lo fanno e penso che ci siano alcuni casi in cui non possono.) – idbrii

+0

@pydave - Sì, dovrebbero usarli dove appropriato. Entrambi i nmap/nnoremap hanno il loro uso corretto, e nessuno dei due dovrebbe essere considerato un proiettile d'argento. Meglio sapere le differenze. – Rook

13

Molti plug-in Vim utilizzano uno <Leader> iniziale per avviare le sequenze di tasti; questa è una chiave (altrimenti normalmente inutilizzata) configurabile dall'utente.

           *<Leader>* *mapleader* 
To define a mapping which uses the " mapleader " variable, the special string 
" <Leader> " can be used. It is replaced with the string value of " mapleader ". 
If " mapleader " is not set or empty, a backslash is used instead. Example: 
     :map <Leader>A oanother line<Esc> 
Works like: 
     :map \A oanother line<Esc> 
But after: 
     :let mapleader = "," 
It works like: 
     :map ,A oanother line<Esc> 

Note that the value of " mapleader " is used at the moment the mapping is 
defined. Changing " mapleader " after that has no effect for already defined 
mappings. 
+1

* QUESTA * è la risposta corretta – aehlke

5

In genere io uso il controllo + [lettera] o alt + [lettera] per la maggior parte mappature ed è sicuro, ma attenzione per 'w' in quanto ciò che è necessario per i comandi della finestra. Potresti anche essere interessato a arpeggio.vim che ti consente di creare mappature su gruppi di tasti premuti contemporaneamente: espanderà in modo massivo le possibilità per i tuoi mapping senza il rischio di sovra-mappare qualcosa. Ad esempio, è possibile mappare "dp" (premuto contemporaneamente) per eseguire "ddp" per eliminare e incollare in un comando.

+0

Appena iniziato ad usare l'arpeggio e fino ad ora mi piace. – stephenmm

Problemi correlati