VIM: jak przejść do dokładnej linii na Ubuntu

87

Używam vina Ubuntu 12.10. Niektóre pliki są dość długie, więc kiedy chcę przejść do środka pliku, muszę przewinąć stronę w dół lub przewinąć w dół.

Czy istnieje skrót do VIM, aby przejść do dokładnego numeru linii?

kevin
źródło
Eksperci @vim. Czy to naprawdę jest specyficzne dla Ubuntu / bash / Linux (zgodnie z tagami OP)? Nie używam dużo Vima, ale do moich zastosowań nie zauważyłem najmniejszej różnicy między Ubuntu / CentOS / Suse / Windows.
Alexander Malakhov

Odpowiedzi:

143
:150

przeniesie Cię do linii 150 w vi

:1500

przeniesie Cię do linii 1500 w vi

Zgodnie z komentarzami, które możesz chcieć spróbować

150G

aby dostać się do linii 150. co oznacza mniej naciśnięć klawiszy, to :150Enter jeśli nie jesteś pewien, na której linii się znajdujesz, spróbuj

 :set nu!

zwróć uwagę na:

jeśli chcesz zawsze widzieć linię, rozważ edycję swojego profilu vima. Najczęściej

vi ~/.vimrc

i dodaj

:set nu! 

pisać i kończyć

:wq
#or you could use :x

można to zrobić poza vi. Na przykład, jeśli chcę usunąć wiersz 5000 w pliku tekstowym, mógłbym użyć języka skryptowego. Na przykład przy użyciu seda wyglądałoby to następująco

sed -i '5000d;' inputFile.txt

byłoby to usunięcie linii od 10 do 20

sed -i '10,20d;' inputFile.txt

zauważ, że -i będzie edytować plik w miejscu. Bez opcji -i nastąpi wyjście na standardowe wyjście. Spróbuj. możesz przekierować standardowe wyjście do pliku

sed '5001,$d;' inputFile.txt >> appenedFile.txt

może się tu dużo dziać. spowoduje to usunięcie linii 5001 do $. Z $ będącym końcem pliku. >> zostanie dołączony do pliku. gdzie as> tworzy nowy plik.

jeśli jesteś ciekawy, ile linii znajduje się w pliku, możesz chcieć wpisać wc -l inputFile.txt

niektóre z nich mogą wydawać się okropnie trywialne, ale jeśli próbujesz edytować plik zawierający 50 000 linii, otwarcie i przeglądanie go może zająć vi słodką minutę. gdzie jeśli wiesz, że chcesz tylko usunąć ostatnią linię, możesz użyć seda i zrobić to w ułamku czasu.

sed może również wyszukiwać i zamieniać w pliku. Ale być może awk, perl lub python również mogą być dobrym rozwiązaniem.

ale ogólnie rzecz biorąc, możesz chcieć znaleźć dobry tutorial na vi. istnieją tysiące. Skonsultowałbym się z Google. Być może znajdź sobie VIM Cheatsheat.

matchew
źródło
Nie ma problemu, trochę rozszerzyłem moją odpowiedź, ale. Powodzenia
matchew
2
również w vimie możesz wpisać: n50% i dostać się do środka pliku.
Eric Fortis
1
W trybie normalnym 150Gdziała tak samo jak :150. Nie jest szybsze, ale może być łatwiejsze do zapamiętania.
romainl
@romainl 150gg robi to samo. Oba są rzeczywiście szybsze niż: 150 <cr>
Randy Morris,
@Randy Morris - Tak, jest szybszy, zapomniałem wziąć <CR>pod uwagę.
romainl
14

Inne wskazówki VIM: w trybie poleceń

  • H przechodzi na górę ekranu
  • M przechodzi na środek ekranu
  • L przechodzi na dół ekranu
  • gg przechodzi do pierwszej linii
  • G przechodzi do ostatniej linii
glenn jackman
źródło
7

poświęć kilka minut i zacznij czytać ten dokument. Na dłuższą metę wynagradza Cię za efektywność edycji, zwłaszcza pliku konfiguracyjnego.

Jasonw
źródło
Link nie żyje
Co jest w wyszukiwarce Google
6

Z otwartego terminala, w powłoce bash, po prostu edytuj plik, uruchamiając:

$ vi +N yourfile

Gdzie Njest numer linii.

Do przeglądania ( morelub less;):

$ less +N yourfile
$ more +N yourfile

Znak +oznacza polecenie uruchomienia przy starcie . Więc jeśli komenda jest tylko numer, a następnie vi, lessi more, będzie to jak skacze do linii numer .

Ale możesz również użyć /regexdo znalezienia pierwszego wystąpienia określonego ciągu lub wyrażenia regularnego:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...
F. Hauri
źródło
3

Kolejna rada: skoro nie masz doświadczenia z vimem, bieganie vimtutormoże być bardzo pomocne.

rvs
źródło
6
Czy nie powinien to być tylko komentarz, ponieważ nie odnosi się do konkretnego pytania?
Brian Rasmussen