I booked a flight from LA to Miami using my abbreviated name 'Chris' instead of my full name 'Christopher' (per my passport) and the right surname. As the ticket is non-refundable the airline refuses to correct the name. The only other type of 'id' I have with the name 'Chris' is a credit card. Will I be able to use the 'Chris' ticket or shoulkd I buy another?
Yes, you can travel, although you might want to show up at the airport a little early in case you get a particularly dim TSA officer/gate agent. From the TSA site:
If the name printed on my boarding pass is different than what appears on my government ID, will I be turned away at security and unable to fly?
Boarding passes may not always display the exact name you provided when booking your travel. The name you provide is used to perform watch list matching before a boarding pass is issued, so small differences should not impact your travel.
Yes, you can travel. However make sure that the Boarding Pass name is correct and matches your ID as much as possible. In the past I have had problems with TSA staff when it does not match. However a quick trip back to the Check-in desk to re-print my boarding pass resolved it.
I have had TSA staff disputing that "Josh" is short for "Joshua" before. It is possible that TSA staff may say "Well, Chris can be short for Christopher or Christian and so I won't let you pass".
Boarding Passes are not the same as tickets, and at least for that airline could be reprinted at will.