VIM: как перейти к точной строке в Ubuntu

87

Я использую viUbuntu 12.10. Некоторые файлы довольно длинные, поэтому, когда я хочу перейти к середине файла, мне нужно пролистать страницу или прокрутить вниз.

Есть ли ярлык VIM для перехода к точному номеру строки?

Кевин
источник
@vim эксперты. Это действительно специфично для Ubuntu- / bash- / Linux (согласно тегам OP)? Я не часто использую vim, но для своих целей я не заметил ни малейшей разницы между Ubuntu / CentOS / Suse / Windows.
Александр Малахов

Ответы:

143
:150

приведет вас к строке 150 в vi

:1500

приведет вас к строке 1500 в vi

Согласно комментариям, вы можете попробовать

150G

чтобы добраться до строки 150. это меньше нажатий клавиш, тогда, :150Enter если вы не уверены, на какой строке вы находитесь, попробуйте

 :set nu!

обратите внимание на:

Если вы хотите всегда видеть строку, подумайте о редактировании своего профиля vim. Чаще всего

vi ~/.vimrc

и добавить

:set nu! 

и написать и выйти

:wq
#or you could use :x

это можно сделать вне vi. Например, если я хочу удалить строку 5000 в текстовом файле, я могу использовать язык сценариев. Например, при использовании sed это будет следующее

sed -i '5000d;' inputFile.txt

чтобы удалить строки с 10 по 20, это будет

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

обратите внимание, что -i отредактирует файл на месте. Без -i он перейдет к stdout. Попытайся. вы можете перенаправить stdout в файл

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

здесь может быть много чего происходит для вас. это удаляет строку 5001 до $. Где $ - конец файла. >> добавит в файл. где as> создает новый файл.

если вам интересно, сколько строк в файле, вы можете ввести wc -l inputFile.txt

некоторые из них могут показаться ужасно тривиальными, но если вы пытаетесь редактировать файл с 50 000 строками, vi может потребоваться приятная минута для открытия и перемещения. где, если вы знаете, что просто хотите удалить последнюю строку, вы можете использовать sed и сделать это за небольшую часть времени.

sed также может выполнять поиск и замену внутри файла. Но, возможно, awk, perl или python также могут быть жизнеспособным решением.

но в целом вы можете захотеть найти хороший учебник по vi. существуют тысячи. Я бы посоветовался с гуглом. Возможно, найдёте себе чит-чит VIM.

Мэтью
источник
Нет проблем, я немного расширил свой ответ, но. Удачи
matchew
2
Кроме того, в vim вы можете ввести: n50% и перейти к середине файла.
Эрик Фортис
1
В обычном режиме 150Gделает то же, что и :150. Это не быстрее, но легче запомнить.
romainl
@romainl 150gg делает то же самое. Оба они действительно быстрее, чем: 150 <cr>
Рэнди Моррис
@Randy Morris - Да, быстрее, забыл <CR>учесть.
romainl
14

Другие советы по vim: в командном режиме

  • H идет в верхнюю часть экрана
  • M переходит в середину экрана
  • L идет в нижнюю часть экрана
  • gg идет на первую строку
  • G переходит к последней строке
Гленн Джекман
источник
7

уделите несколько минут и начните читать этот документ. В конечном итоге он вознаграждает вас за эффективность редактирования, особенно файла конфигурации.

Jasonw
источник
Ссылка теперь мертва
Что
6

В открытом терминале в оболочке bash просто отредактируйте файл, запустив:

$ vi +N yourfile

Где Nномер строки.

Для просмотра ( moreили less;):

$ less +N yourfile
$ more +N yourfile

Знак +означает команду для запуска при запуске . Так что, если команда является только число, то vi, lessи more, будет подскакивает к этому , как номер строки .

Но вы также можете использовать /regexдля поиска первого появления определенной строки или регулярного выражения:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...
Ф. Хаури
источник
3

Еще один совет: поскольку вы новичок в vim, запуск vimtutorможет быть очень полезным.

rvs
источник
6
Разве это не должно быть просто комментарием, поскольку он не касается конкретного вопроса?
Брайан Расмуссен