2013-02-21 11 views
32

Czy istnieje mapowanie klawiszy, które wyświetla bieżący numer wiersza edytowanej linii? A może jeszcze lepiej, czy możemy tworzyć formuły w oparciu o dane wyjściowe mapowania kluczowego?Uzyskiwanie bieżącego numeru wiersza?

Chcę uzyskać numer wiersza i dodać 1 do edytowanego tekstu.

+0

środki wyjściowe „Tekst mojego dokumentu " – pacv

+1

Czy próbujesz wyświetlić wynik, czy próbujesz zapisać ten wynik do bufora? –

+3

Czy próbowałeś: set nu – Khuram

Odpowiedz

4

Odpowiedź została przyznana przez @ZyX w komentarzu do innej odpowiedzi:

Masz <C-r> w trybie wstawiania do tego rodzaju rzeczy:

nnoremap <F1> i<C-r>=line('.')+1<CR><Esc>

38

Ctrl + G powie numer linii, a nawet kolumny znajduje się kursor. Jeśli masz na myśli wyjście jako tekst do dokumentu, a następnie, że nie wiem.

+8

Ctrl + G do mnie pokazuje tylko całkowitą liczbę linii i/procent/dokumentu, w którym jestem ... szalony. vim 7.1 – gcb

25

Co masz na myśli przez "wynik"? Można to zrobić:

:echo line(".") + 1 

Aby wyświetlić bieżący numer linii oraz 1. Można powiązać klawiszy z map, np:

:map <F1> :echo line(".") + 1<cr> 

Aby właściwie wstawić dane do bufora:

:map <F1> :execute "normal! i" . (line(".") + 1)<cr> 
+4

Nie możesz używać ': map' tutaj. Bez 'nore' polecenia powinny być w ogóle używane] (http://learnvimscriptthehardway.stevelosh.com/chapters/05.html), ale dodatkowo': map' definiuje mapowanie dla większej liczby trybów niż chciałbyś aby zobaczyć w: nie potrzebujesz tych odwzorowań w wizualizacji (w ogóle tu nie zadziałają) i trybów oczekujących na operatora. Również używanie ': normal' jest dziwne, masz' 'w trybie wstawiania dla tego rodzaju rzeczy:' nnoremap i = linia ('.') + 1 '. – ZyX

+0

Dziękuję nnoremap i = linia (". ') + 1 jest odpowiedzią, której szukałem – pacv

1

Możesz uzyskać wizualną szerokość bieżącej pozycji kursora za pomocą virtcol('.'); wstawić to do bufora przez rejestr ekspresji, np. w trybie wstawiania za pomocą <C-R>=virtcol('.')<CR>

Należy zauważyć, że szerokość różni się od liczby znaków, gdy wiersz zawiera znaki o podwójnej szerokości, <Tab> lub znaki niedrukowalne.

Powiązane problemy