aw. dlaczego, do cholery, to pytanie zostało przeniesione do SU? Jest to pytanie programistyczne związane z narzędziem prorgramming . Nie ma więcej SO. Programiści skupiający się na SO (jak ja) nie byliby teraz w stanie znaleźć tej odpowiedzi, ponieważ 5 osób nie wie, co to jest vim. Domyśl. META: meta.stackexchange.com/questions/25925/vim-questions-so-or-su
sehe
@hehe, zgadzam się, to jest pytanie do stackoverflow
juanpablo
Odpowiedzi:
9
if &nu == 1
set rnu
elseif &rnu == 1
set nornu
else
set nu
endif
dzięki Benoit, dodałem twoje rozwiązanie jako sedno
juanpablo
1
@JuanPablo: mmm.
Bardziej
1
@sehe: Powiedziałbym to samo o mojej wersji. :-)
17
Ponieważ uwielbiam łamigłówkę logiczną i naprawdę ją uwielbiam, gdy polecenie vim pasuje do pojedynczego wiersza dla zwięzłych powtórzeń ( @:jest osobistym ulubionym):
:exec &nu==&rnu? "se nu!" : "se rnu!"
To utrzyma ten sam cykl. Myślę, że let &nu=1dzieje się tak głównie dlatego, że domyślnie ustawimy norelativenumber - z powodów prawdopodobnie znalezionych w dokumentacji :)
+1, ponieważ mogę umieścić go w moim pliku .vimrc jako jeden wiersz nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>przełączania trzech opcji za pomocą F3.
3
możesz to zrobić nnoremap <silent> <F3>... aby zmniejszyć rozproszenie wzroku i zakłócanie innych mapowań.
patrz
Wpadłem na prawie tym samym (ale krótszy :-) linii podczas odczytu na pytanie exe'se'&nu+&rnu?'rnu!':'nu'.
Nawiasem mówiąc, aby upewnić się o połączeniu między numberi relativenumberopcjami, zobacz :helpg When setting this option.
@ib: dzięki za udostępnienie. Naprawdę uwielbiam twoje gry w vim code - są tam klejnoty, które naprawdę przyspieszają moją codzienną pracę; W tym przypadku wybrałem jednak konkretnie moją wersję (3 znaki netto dłużej - oprócz skurczu w przestrzeni kosmicznej), ponieważ jest ona czytelna. Moim zdaniem, dalsze zagęszczanie nie przynosi żadnych korzyści: trudniej jest pisać i trudniej je zapamiętać, nawet jeśli kiedykolwiek musiałeś pisać z pamięci. To będzie mapowanie. Więc wersja Benoit jest w porządku, z wyjątkiem, że nie pasują ładnie w jednej linii
sehe
8
Od wersji Vima 7.3.1115 stało się to trochę bardziej skomplikowane.
Powodem jest to, że oprócz „bez numerów linii” i „bezwzględnych numerów linii” istnieją teraz dwa ustawienia względnych numerów linii: zwykłe „względne numery linii” i „względne numery linii z liczbą bezwzględną na linii kursora”.
Mówiąc bardziej technicznie, wszystkie cztery kombinacje 'number'i 'relativenumber'są teraz możliwe.
Oto jak przełączyć:
Przełącz wszystkie cztery ustawienia, bez liczb → absolutne → względne → względne z absolutnym na linii kursora :
:exe 'set nu!' &nu ? 'rnu!' : ''
Przełącz między brakiem → absolutem → względnym :
:let [&nu, &rnu] = [&nu+&rnu==0, &nu]
Przełącz między brakiem → absolutem → względnym z absolutem na linii kursora :
Dla tych, którzy chcieliby bardziej czytelnego rozwiązania, oto, co mam w moim .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>
Fajną rzeczą jest to, że możesz nacisnąć ctrl+, naby przełączać się między trybami liczb względnych i bezwzględnych!
Kolejna alternatywa, taka jak Eric Anderson powyżej:
"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>
Odpowiedzi:
źródło
Ponieważ uwielbiam łamigłówkę logiczną i naprawdę ją uwielbiam, gdy polecenie vim pasuje do pojedynczego wiersza dla zwięzłych powtórzeń ( @:jest osobistym ulubionym):
To utrzyma ten sam cykl. Myślę, że
let &nu=1
dzieje się tak głównie dlatego, że domyślnie ustawimy norelativenumber - z powodów prawdopodobnie znalezionych w dokumentacji :)źródło
nmap <F3> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR>
przełączania trzech opcji za pomocą F3.nnoremap <silent> <F3>
... aby zmniejszyć rozproszenie wzroku i zakłócanie innych mapowań.exe'se'&nu+&rnu?'rnu!':'nu'
.number
irelativenumber
opcjami, zobacz:helpg When setting this option
.Od wersji Vima 7.3.1115 stało się to trochę bardziej skomplikowane.
Powodem jest to, że oprócz „bez numerów linii” i „bezwzględnych numerów linii” istnieją teraz dwa ustawienia względnych numerów linii: zwykłe „względne numery linii” i „względne numery linii z liczbą bezwzględną na linii kursora”.
Mówiąc bardziej technicznie, wszystkie cztery kombinacje
'number'
i'relativenumber'
są teraz możliwe.Oto jak przełączyć:
Przełącz wszystkie cztery ustawienia, bez liczb → absolutne → względne → względne z absolutnym na linii kursora :
Przełącz między brakiem → absolutem → względnym :
Przełącz między brakiem → absolutem → względnym z absolutem na linii kursora :
źródło
Dla tych, którzy chcieliby bardziej czytelnego rozwiązania, oto, co mam w moim .vimrc
Fajną rzeczą jest to, że możesz nacisnąć ctrl+, naby przełączać się między trybami liczb względnych i bezwzględnych!
źródło
Kolejna alternatywa, taka jak Eric Anderson powyżej:
źródło
źródło