If the response is really a ramp, i.e., a single integrator, you could use a P or PI controller.
If the ship has some mass to her, then the ship's turn does not start or stop immediately -- rudder position exerts a torque. That would make the system a double-integrator. So the step response is not really a ramp but rather would accelerate. In addition, there is likely to be another pole in the response of the rudder, as well as rate and value limits. The value limits (saturation) in particular affects any tuning procedure, and more so the double integrator.
In any case, for something that is approximately a double integrator, you could start with a PD controller, or a Lead controller, and make refinements from there. Set the zero to a low frequency. If using Lead, set the pole to 10x the zero or higher. Vary the gain until you find the sweet spot. Some overshoot in the step response will be unavoidable because of the zeros, but can be filtered out on the input.
This may lack disturbance rejection, which can be fixed by going to PID or PI-Lead. Try putting the additional zero in the same place as the first one. If PI-Lead, set the additional pole at 10x the zeros or higher again.
If the plant is approximately a double integrator with an extra pole, start with the controller double zeros at 1/30 to 1/100 of the plant's additional pole. If PI-Lead in this case, the controller pole should be well above the additional plant pole. Even so, there will be a narrower range of gains that can work.
The suggestion in the other answer to control yaw-velocity is also a good one, especially if the above method is too challenging. It would result in cascaded control. The idea is to have two simpler loops instead of one complicated one.
In all cases, the saturation has to be dealt with. With a cascaded loop, it's also helpful to make it so the outer loop's integrator does not wind up when the inner loop is saturating.