¿Puedo usar SPACE como mapleader en VIM?


82

De http://items.sjbach.com/319/configuring-vim-right obtuve que se suponía que Spacedebías poder usar como mapleader en vim. Lo he intentado, pero no parece funcionar. ¿Alguien que lo haya hecho funcionar?

Intentó:

let mapleader = <space>

7
¡Increíble! Acabo de leer la misma publicación del blog y encontré esto después de probar <SPACE> ... Descubrí que en MacVim esto no eliminó la asignación de "mover un carácter hacia adelante" de la barra espaciadora, por lo que para otros que encuentren esto en Google: agregue "nnoremap <SPACE> <Nop>" antes de "let mapleader ..." esto funcionó para mí.
michiakig

Respuestas:


97

En su lugar, intente lo siguiente:

let mapleader=" "

Y recuerde escribir la siguiente línea antes de eso, para asegurarse de que la barra espaciadora no tenga ningún mapeo de antemano:

nnoremap <SPACE> <Nop>

19
Como Spacemanaki comenta en la pregunta anterior, nnoremap <SPACE> <Nop>era necesario que esto funcionara.
Sasha

1
@ Sasha: ¿en serio? ¿Podría explicar por qué, y si realmente lo es, quizás debería editar la pregunta?
greg0ire

4
Sin el mapeo de Sasha, presionar <Espacio> no se comportará como otras teclas como mapleader. <Espacio> en modo normal se asigna a <derecha>. Simplemente presione <espacio> un par de veces seguidas y verá un comportamiento no deseado, que puede solucionarse mediante nnoremap <Space> <nop>.
freeo

3
Para agregar a esta respuesta, tenga en cuenta que el valor de mapleadertake solo afecta las asignaciones que ocurren después de que mapleaderse establece. Ver :help leader.
evnu

Tuve que guardar y cerrar el archivo rc. Estaba usando :source %pero la reasignación de espacio no funcionaba.
Jonathan Morales Vélez

67

Mapleader es una variable de cadena de Vim. Para usar el espacio como líder, debes escapar del personaje especial.

let mapleader = "\<Space>"

Para obtener más información, consulte

http://vimdoc.sourceforge.net/htmldoc/eval.html#expr-quote

EDITAR:

Esto ya no me funciona en mi versión de Vim. Incluso con la sugerencia en los comentarios de anular el mapeo de la barra espaciadora en modo normal ejecutando nnoremap <SPACE> <Nop>.

Termino yendo con la solución dada en la respuesta a continuación.

map <Space> <Leader>

1
Además, asegúrese de usar comillas dobles "\<Space>"y no '\<Space>'.
crlane

1
Prefiero esta respuesta.
Cantó el

let mapleader = "\<Space>"funcionó para mí en nvim, pero no en vim. map <Space> <Leader>tampoco funciona en vim para mí.
Günter Zöchbauer

noremap <Space> <Nop> map <Space> <Leader>trabajó en vim
Günter Zöchbauer

Tuve que quitar el espacio alrededor =para que el mío funcionara, en Neovim.
Nikhil CSB

18

Las soluciones anteriores son excelentes, sin embargo, no aparece nada en la esquina de comando inferior derecha. Si no tiene ningún uso para la \clave de todos modos, intente usar map <SPACE> <leader>y \aparecerá en la esquina de comandos. Eso y no tiene que desasignar el espacio primero, como se sugiere en los comentarios anteriores.


3
Esto rompe el comentarista de NERD. Y al menos en Vim 8 y Neovim, el espacio aparece como <20>si estuviera showcmdencendido, así que supongo que con Vim lo suficientemente nuevo, esta respuesta es obsoleta.
user31389

Solo quiero agregar aquí que esta también es la mejor solución si ya ha desarrollado la memoria muscular para el líder predeterminado, pero desea comenzar a usar el espacio para una mejor eficiencia. "\ r" todavía está conectado a mi memoria muscular para abrir Nerd Tree y usar cscope, por lo que es bueno que aún funcione incluso cuando mapeo el espacio al líder (aunque no siento la necesidad de usar Nerd Commenter).
DrEsperanto
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.