Come posso spostare la pagina shift + barra spaziatrice in Vim?
-
07-07-2019 - |
Domanda
Ho una voce nel mio .vimrc che fa scorrere la pagina verso il basso nel viewport quando colpisco la barra spaziatrice. Sembra così:
map <Space> <PageDown>
Voglio creare un'altra mappatura dei tasti che spinga la finestra verso l'alto quando si tiene premuto shift e si preme la barra spaziatrice. Ho provato le seguenti voci:
map <Shift><Space> <PageUp>
map <S-Space> <PageUp>
Nessuno dei due funziona. Qualcuno sa come ottenere questa funzionalità?
Soluzione
Non puoi. La soluzione di CMS funzionerà per gVim, ma non in vim perché i terminali non sono in grado di distinguere tra & Lt; Space & Gt; e < S-Space > perché le maledizioni li vedono allo stesso modo. In futuro potrebbe essere possibile se vim ottiene il supporto libtermkey e il tuo terminale supporta il corretto & Lt; CSI & Gt; sequenze (xterm se configurato correttamente; nient'altro lo fa ancora).
Altri suggerimenti
Se stai usando vim all'interno di iTerm2 puoi mappare shift-spazio su ctrl + U inviando la chiave esadecimale 15. Ecco una schermata:
Per cercare un codice esadecimale per una combinazione ctrl + lettera, ad esempio ctrl + u, puoi fare quanto segue:
- In vim entra nella modalità di inserimento
- Premi ctrl + v quindi ctrl + u quindi ctrl + c poi ga
- varie rappresentazioni numeriche verranno stampate in basso
È possibile applicare questa idea ad altri emulatori di terminale che supportano la mappatura dei tasti.
Usa questo:
map <Space> ^D " Pagedown when press Space
map <S-Space> ^U " Page Up when press Shift Space
Per ottenere correttamente il simbolo ^ D e ^ U basta premere Control-V Control-D e Control-V Control-U
Per OSX:
nnoremap <Space> <C-d>
nnoremap <S-Space> <C-u>