Вот грубый метод, который работает на Вас, Вы должны будете сначала получить терминальный размер и вычислить положение строки:
#include <iostream>
#include <cstring>
#include <sys/ioctl.h>
using namespace std;
void output_middle (const char *s, int term_cols)
{
cout << string ( (term_cols - strlen(s)) >> 1, ' ') << s << endl;
}
int main ( int argc , char **argv )
{
struct winsize w;
ioctl(0, TIOCGWINSZ, &w);
output_middle ("some string", w.ws_col);
return 0;
}
Я считаю, что это может быть из-за версии VIM, установленной на OSX по умолчанию. Вы всегда можете установить VIM через домеров и посмотреть, помогает ли эта замена. Я нашел эту страницу, которую помогает поддерживать опыт терминала OSX. https://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/
Обратите внимание на это Line 'Brew Установить VIM - System-Vi'
Это не связано ни с оболочкой, ни с версией vim
. Это простая конфигурация, поскольку работа backspace в режиме вставки - это обычное vim
настраиваемое поведение. Точнее, это vim
настройка backspace
. На одной машине вы (скорее всего) установили его на пустую строку, а на другой - на значение start
. А это, вероятно, находится в глобальном конфигурационном файле.
Обратите внимание, что по умолчанию при запуске vim
в vi
-совместимом режиме переменная backspace
будет пустой строкой. Поведение, на которое вы жалуетесь, на самом деле является поведением оригинального vi
. Операционные системы Linux склонны заполнять глобальный конфигурационный файл всевозможными опциями vim
, которые включают "более дружественное" поведение, отклоняющееся от поведения оригинального vi
. BSD, как правило, этого не делают.
:help backspace
. документация vim. Проверьте соответствие клавиш iTerm
(Preferences -> Profiles -> Keys
). Я использовал предустановку редактирования естественного текста по умолчанию, и согласно этому ответу , удаление сопоставлений клавиш, связанных с удалением, решило проблему для меня.