aw ¿Por qué demonios se migró esta pregunta a SU? Es una pregunta de programación relacionada con una herramienta de programación . No hay más SO que eso. Los programadores que se centran en SO (como yo) ahora no podrían encontrar esta respuesta porque 5 personas no saben qué es vim. Imagínate. META: meta.stackexchange.com/questions/25925/vim-questions-so-or-su
sehe
@sehe, estoy de acuerdo, esta es una pregunta para stackoverflow
juanpablo
Respuestas:
9
if &nu == 1
set rnu
elseif &rnu == 1
set nornu
else
set nu
endif
gracias Benoit, agregué tu solución como una esencia
juanpablo
1
@JuanPablo: mmm. Yo como mi mejor versión :)
sehe
1
@sehe: Yo diría lo mismo sobre mi versión. :-)
17
Porque amo un rompecabezas lógico, y realmente me encanta cuando un comando vim cabe en una sola línea para repeticiones breves ( @:es un favorito personal):
:exec &nu==&rnu? "se nu!" : "se rnu!"
Esto mantendrá el mismo ciclo. Creo que se debe principalmente let &nu=1a que establecerá implícitamente un número no relativo, por razones que probablemente se encuentran en la documentación :)
+1 ya que puedo colocarlo en mi archivo .vimrc como una línea nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>para alternar entre tres opciones usando F3.
3
podrías hacer eso nnoremap <silent> <F3>... para reducir la distracción visual e interferir con otras asignaciones.
sehe
Se me ocurrió casi lo mismo (pero más corto :-) línea cuando lee la pregunta: exe'se'&nu+&rnu?'rnu!':'nu'.
Por cierto, para asegurarse de la conexión entre numbery las relativenumberopciones, vea :helpg When setting this option.
@ib: gracias por compartir. Realmente amo sus campos de golf vim code: hay gemas que realmente aceleran mi trabajo diario; En este caso, sin embargo, he seleccionado específicamente mi versión (una red de 3 caracteres más, además de un calambre en el espacio) porque es legible. En mi opinión, no hay ninguna ganancia al condensarlo más: se hace más difícil de escribir y mucho más difícil de recordar, incluso si alguna vez tuvo que escribirlo de memoria. Esto va a estar en un mapeo. Así que la versión de Benoit está bien, excepto que no encaja bien en una sola línea
Sehe
8
A partir de Vim 7.3.1115, esto se ha vuelto un poco más complicado de hacer.
La razón es que, además de "sin números de línea" y "números de línea absolutos", ahora hay dos configuraciones para los números de línea relativos: "números de línea relativos" ordinarios y "números de línea relativos con número absoluto en la línea del cursor".
Más técnicamente hablando, las cuatro combinaciones de 'number'y 'relativenumber'ahora son posibles.
Aquí se explica cómo alternar:
Alternar las cuatro configuraciones, sin números → absoluto → relativo → relativo con absoluto en la línea del cursor :
:exe 'set nu!' &nu ? 'rnu!' : ''
Alternar entre sin números → absoluto → relativo :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Alternar entre ningún número → absoluto → relativo con absoluto en la línea del cursor :
Para aquellos que desean una solución más legible, lo siguiente es lo que tengo en mi .vimrc
" Relative or absolute number lines
function! NumberToggle()
if(&nu == 1)
set nu!
set rnu
else
set nornu
set nu
endif
endfunction
nnoremap <C-n> :call NumberToggle()<CR>
¡Lo bueno de esto es que puedes presionar ctrl+ npara alternar entre los modos de número relativo y absoluto!
"Relative with start point or with line number or absolute number lines
function! NumberToggle()
if(&number == 1)
set number!
set relativenumber!
elseif(&relativenumber==1)
set relativenumber
set number
else
set norelativenumber
set number
endif
endfunction
nnoremap <C-n> :call NumberToggle()<CR>
" put this in your .vimrc or source it from your .vimrc
function! ToggleRelativeNumber()
if &relativenumber
set norelativenumber
else
set relativenumber
endif
endfunction
nmap ;r :call ToggleRelativeNumber()<CR>
Respuestas:
fuente
Porque amo un rompecabezas lógico, y realmente me encanta cuando un comando vim cabe en una sola línea para repeticiones breves ( @:es un favorito personal):
Esto mantendrá el mismo ciclo. Creo que se debe principalmente
let &nu=1
a que establecerá implícitamente un número no relativo, por razones que probablemente se encuentran en la documentación :)fuente
nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>
para alternar entre tres opciones usando F3.nnoremap <silent> <F3>
... para reducir la distracción visual e interferir con otras asignaciones.exe'se'&nu+&rnu?'rnu!':'nu'
.number
y lasrelativenumber
opciones, vea:helpg When setting this option
.A partir de Vim 7.3.1115, esto se ha vuelto un poco más complicado de hacer.
La razón es que, además de "sin números de línea" y "números de línea absolutos", ahora hay dos configuraciones para los números de línea relativos: "números de línea relativos" ordinarios y "números de línea relativos con número absoluto en la línea del cursor".
Más técnicamente hablando, las cuatro combinaciones de
'number'
y'relativenumber'
ahora son posibles.Aquí se explica cómo alternar:
Alternar las cuatro configuraciones, sin números → absoluto → relativo → relativo con absoluto en la línea del cursor :
Alternar entre sin números → absoluto → relativo :
Alternar entre ningún número → absoluto → relativo con absoluto en la línea del cursor :
fuente
Para aquellos que desean una solución más legible, lo siguiente es lo que tengo en mi .vimrc
¡Lo bueno de esto es que puedes presionar ctrl+ npara alternar entre los modos de número relativo y absoluto!
fuente
Otra alternativa como Eric Anderson arriba:
fuente
fuente