Я думаю, что ответ на этот вопрос на самом деле есть довольно много модальных текстовых редакторов, которые не являются форками vi / vim. Однако все они используют привязки клавиш vi . Пользователи Vi получают привязки клавиш в свою мышечную память, поэтому переучивать другой набор привязок клавиш будет действительно сложно, поэтому никто не будет создавать другой набор привязок клавиш.
Но многие разные редакторы заново внедрили привязки клавиш vi с нуля. Просто посмотрите на этот вопрос об IDE с привязками клавиш vi . По крайней мере половина ответов - это редакторы, созданные с нуля, которые реализуют привязки клавиш vi, а не версии встроенных vi.
Вот ваш код изменен, чтобы не добавлять метку порядка байтов ( BOM ):
var serializer = new XmlSerializer(typeof(Xsd.MESSAGE));
Encoding utf8EncodingWithNoByteOrderMark = new UTF8Encoding(false);
XmlTextWriter xtw = new XmlTextWriter(stream, utf8EncodingWithNoByteOrderMark);
serializer.Serialize(xtw, response);
string xml = Encoding.UTF8.GetString(stream.ToArray());
65279 - это метка порядка байтов Unicode - вы уверены, что вы? повторно получить 65249? Предполагая, что это действительно спецификация, вы можете избавиться от нее, создав экземпляр UTF8Encoding, который не использует спецификацию. (См. Подробности о перегрузках конструктора.)
Однако есть более простой способ получить UTF-8. Вы можете использовать StringWriter
, но производный класс, который переопределяет свойство Encoding
. См. этот ответ в качестве примера.