If you enter a command more than twice, put it in a script.
I don't remember who said this, but it is a good rule of thumb for administrators and essentially everybody working on a shell. In fact, that is one of the points, why I love working with Linux.
I found myself grep'ing again and again in the same files, so I optimized the workflow. Both scripts are in my Scripts repository on Github.
bibgrep
bibgrep
started as a tool just to search in my BibLaTeX files.
But as grep usually only displays the matching line (or a constant number
of surrounding lines), I ended up repeatedly opening the found position(s)
in an editor.
Therefore, bibgrep
uses sed
to display whole entries up to the closing
brace (that sits always on its own line in my bib files).
With some coloring, the output is better readable.
The most recent improvement is storing the identified BIB key in
the X11 clipboard (using xsel
).
This allows me to directly paste it in the editor or to use texgrep
subsequently.
texgrep
texgrep
is hardly more than a one-liner,
but if no parameters are provided, it uses the X11 clipboard
as search term.
In my workflow, I use bibgrep
to find an entry (or check if it exists)
and then use texgrep
to find all places where it is cited:
$ bibgrep Kato
../../bib/linux.bib:120
@inproceedings{Kato2010Airs,
[...]
}
../../bib/linux.bib:344
@inproceedings{Kato2008Modular,
[...]
}
$ bibgrep Kato2010
../../bib/linux.bib:120
@inproceedings{Kato2010Airs,
[...]
}
$ texgrep
TERM='Kato2010Airs'
chap01b_related.tex:366:\citetitle{Kato2010Airs}
The first search for "Kato" found two entries, therefore the search
was repeated with the year "Kato2010".
This is unique and a following texgrep
searches for the previously
identified key "Kato2010Airs"
and displays that this BIB entry is cited in one TEX file
(it displays also the line).
The next improvement would be to store this info and somehow direct my vim instanct to jump to that line...