4

Я часто использую grep с опцией -n для отображения номеров строк, например

$ grep -n xyz .*
/ext1/acheong/foo/bar/a.cc:42:    inline bool abc(int xyz);
/ext1/acheong/foo/bar/a.cc:43:    inline bool def(int xyz);
/ext1/acheong/foo/bar/b.cc:415:            int xyz = result;
/ext1/acheong/foo/bar/b.cc:490:                xyz += result;
$

Было бы возможно, чтобы псевдоним vim таким образом, что делает

vim /ext1/acheong/foo/bar/b.cc:415

будет открывать файл и искать строку 415 автоматически?

Возможно ли это в csh? (Да, да, csh выявляет дьявола и все нечестивое; но у меня нет выбора ...) Ответ для других оболочек тоже будет полезен.

4 ответа4

7

Ну, это не псевдоним, вы можете использовать vim вот так:

vim +<LineNumberHere> fileName

Так, например

vim +150 .bash_history

открывает ваш файл .bash_history (для bash) и переходит к строке 150.

Кстати, вы также можете сделать это с помощью поисковых терминов. Например

vim +/MyTerm MyFile

открывает MyFile и переходит к первому появлению MyTerm сверху.

Наслаждайтесь!

4

Одним из решений этой проблемы является использование плагина file_line.vim , который позволяет вам указывать имя файла и номер строки в качестве аргумента для Vim или в командной строке Vim, как вы показали.

Еще один сценарий,

$ cat $(which vimgrep)
#!/bin/bash

tmp=$(mktemp)

cat > $tmp
exec < /dev/tty
vim --cmd 'let &efm=&gfm' -q $tmp "$@"
rm $tmp

который можно использовать так:

$ grep -Hn xyz .* | vimgrep

и который загружает все совпадения в список ошибок быстрого исправления Vim. Увидеть

:help quickfix.txt

Обратите внимание на параметр -H для grep, чтобы убедиться, что имя файла включено в вывод grep, даже если .* Расширяется только до одного имени файла.

1

Вы можете сделать свое замечание от самого Vim:

:grep xyz *

затем откройте окно быстрого исправления:

:cw
1

vim-fetch может открывать файлы в определенном месте в виде значений, разделенных двоеточием.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .