gosh, I was wrong! you don't even need vim7 for that...
just visual, !sort -k 2 and that's it the problem is that after that the block are no longer separated by whitespaces and a BIG blank screen is showed but the rerefences are ahead, in the bottom of the file... That's why I thought vim was removing everything... it wasn't, it was just working properly... you delete spaces and they are kept, as blank lines... the size of the file is the same but you just have to look in the bottom! A mere :%s/$/\r suffices then, as Tim said vim is just great! Pau 2007/1/5, Vim Visual <[EMAIL PROTECTED]>:
HI, thanks for the answer. If I try that the whole reference blocks are deleted... If I do it after having selected them on visual mode, I get "Not an editor command" If you want to try yourself, the whole file is here http://www.aei.mpg.de/~pau/biblio_TOT.bbl vim version 7.0.42 here ... ?????? Thanks Pau 2007/1/4, Tim Chase <[EMAIL PROTECTED]>: > > I have a long bibliography file for a latex document and I must put > > the references in order. Unfortunately the different authors have used > > different styles, so that I have two blocks. > > In the first block all references look like > > > > ------------------------------------------------------------ > > \bibitem[ {Aarseth}, 1999]{Aarseth99}{Aarseth}, S.~J. (1999).\newblock > > {From NBODY1 to NBODY6: The Growth of an Industry}.\newblock {\em > > PASP}, 111:1333--1346. > > ---------------------------------------------------------- > > > > (note that each entry is a single row) > > > > And in the second block I have > > > > ---------------------------------------------------------- > > \bibitem{stroeer06emri} Stroeer A, Gair J R and Vecchio A, 2006, > > Proceedings of 6th LISA Symposium submitted, preprint gr-qc/0605227 > > ---------------------------------------------------------- > > > > (idem, single rows) > > Well, if a few liberties can be taken, Vim7's sorting > functionality offers a killer solution to this problem: > > :%sort /\\bibitem[^{]*{\zs/ > > Since each bib item is on its own line (and not overflowing to > multiple lines), a simple sort at the "right" offset (as kindly > found by the regexp) will do the trick. In this case, the > pattern is "start ("\zs") the sorting comparison after '\bibitem > up through the first open-curly-bracket' ("\\bibitem[^{]*{")" > > (okay, now /that/ had some odd quoting and parenthesizing in it...) > > It does have the side effect that the block are no longer > separated by whitespace, but this can then be rectified with > > :%s/$/\r > > which will doublespace them again. > > Adjust the "%" for to be your desired range. > > > I have more than 200 references and I don't feel like doing this per hand! > > > Hopefully this does the trick for you. If not, drop a line to > the list with the details of went gonzo (likely some precondition > I'm missing). > > -tim > > >
