VIM: як перейти до точного рядка на Ubuntu


87

Я використовую viна Ubuntu 12.10. Деякі файли досить довгі, тому, коли я хочу перейти до середини файлу, мені доводиться перегортати сторінку вниз або прокручувати вниз.

Чи існує ярлик VIM для переходу до точного номера рядка?


Експерти @vim. Це насправді стосується Ubuntu- / bash- / Linux (за тегами OP)? Я мало використовую vim, але для свого використання я не помітив ні найменшої різниці в Ubuntu / CentOS / Suse / Windows.
Олександр Малахов

Відповіді:


143
:150

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

:1500

приведе вас до лінії 1500 in 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 до $. Кінець файлу - $. >> додасться до файлу. де як> створює новий файл.

якщо вам цікаво, скільки рядків у файлі ви можете набрати wc -l inputFile.txt

дещо з цього може здатися жахливим дріб’язковим, але якщо ви намагаєтесь відредагувати файл із 50 000 рядків, це може зайняти солодку хвилину, щоб відкрити та обернути. де, якщо ви знаєте, що просто хочете видалити останній рядок, ви можете використовувати sed і зробити це за частку часу.

sed також може шукати та замінювати всередині файлу. Але, можливо, awk, perl або python також можуть бути життєздатним рішенням.

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


Немає проблем, я трохи розширив свою відповідь, але. Удачі
матч

2
також у vim ви можете ввести: n50% і дістатись до середини файлу.
Eric Fortis,

1
У звичайному режимі 150Gробить те саме, що і :150. Це не швидше, але запам'ятати, можливо, легше.
romainl

@romainl 150gg робить те саме. Обидва вони справді швидші за: 150 <cr>
Ренді Морріс,

@Randy Morris - Так, це швидше, я забув взяти <CR>до уваги.
romainl,

14

Інші поради vim: у командному режимі

  • H переходить до верхньої частини екрана
  • M переходить до середини екрана
  • L переходить до нижньої частини екрана
  • gg переходить до першого рядка
  • G переходить до останнього рядка

7

займіть кілька хвилин і починайте читати цей документ. Це винагородить вас у довгостроковій перспективі за ефективність редагування особливо конфігураційного файлу.


Посилання вже мертве
Що знаходиться в Пошуку Google

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може бути дуже корисним.


6
Чи не повинен це бути просто коментар, оскільки він не стосується конкретного питання?
Брайан Расмуссен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.