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?


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.


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


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...

3

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


6
Czy nie powinien to być tylko komentarz, ponieważ nie odnosi się do konkretnego pytania?
Brian Rasmussen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.