Heat 1 tablespoon oil in a 12-inch nonsitick skillet over medium heat until hot. Pat salmon dry and sprinkle with 1 teaspoon salt and 1/2 teaspoon pepper, then cook, skin side up, until undersides form a golden crust, 12-15 minutes.
Turn fish over and cook until just cooked through, about 3 minutes more.
Meanwhile, heat remaining 2 tablespoons oil in a large skillet over medium high heat until it shimmers, then saute onions until golden brown and crisp-tender, 6-8 minutes. Stir in vinegar, sugar, and 1/2 teaspoon salt and cook until sauce is syrupy, about 2 minutes. Remove from heat and stir in butter.
Spoon onions with sauce onto plates and top with salmon, skin side down.