Faits: A. D._, né en 1966, travaillait comme ouvrier au service de la société X._. Le 26 février 2000, il a été victime d'un accident de ski entraînant une lésion au genou gauche. Depuis cette date, il n'a plus exercé d'activité pour son employeur et résilié ses rapports de travail au 30 juin 2000. Les suites de l'accident ont été prises en charge par la Caisse nationale suisse d'assurances (CNA), qui a alloué à D._ une rente fondée sur un taux d'invalidité de 13% à partir du 1er juin 2005 (décision du 4 janvier 2007 et décision sur opposition du 21 février suivant). Entre-temps, le 11 avril 2001, D._ a déposé une demande de prestations de l'assurance-invalidité. Après avoir effectué plusieurs stages d'évaluation et d'orientation, il a suivi une formation pratique de deux ans dans le montage d'appareils électroniques et des cours d'informatique à la charge de l'assurance-invalidité. Au terme de ces mesures, l'Office de l'assurance-invalidité pour le canton de Vaud (ci-après: l'office AI) a complété l'instruction sur le plan économique et médical, en requérant notamment l'avis du docteur S._, spécialiste en neurologie. Dans un projet de décision du 10 novembre 2006, puis par décision du 2 novembre 2007, l'office AI a nié le droit de l'assuré à une rente d'invalidité, au motif qu'il ne présentait pas un degré d'invalidité (fixé à 11%) suffisant pour ouvrir le droit à cette prestation. B. L'assuré a déféré la décision sur opposition du 2 novembre 2007 au Tribunal des assurances du canton de Vaud (depuis le 1er janvier 2009, Cour des assurances sociales du Tribunal cantonal), qui l'a débouté par jugement du 18 novembre 2008. C. D._ interjette un recours en matière de droit public contre ce jugement, dont il demande l'annulation. Sous suite de dépens, il conclut au renvoi de la cause à l'office AI pour qu'il complète l'instruction sur le plan médical. L'office AI conclut implicitement au rejet du recours, tandis que l'Office fédéral des assurances sociales a renoncé à se déterminer.