Вот реальный простой:
#include <vector>
#include <string>
using namespace std;
vector<string> split(const char *str, char c = ' ')
{
vector<string> result;
do
{
const char *begin = str;
while(*str != c && *str)
str++;
result.push_back(string(begin, str));
} while (0 != *str++);
return result;
}
В моем .vimrc есть следующее; вам понадобится только второй. Он выводит сообщение в строку состояния вместо появления диалогового окна.
autocmd FileChangedRO * echohl WarningMsg | echo "File changed RO." | echohl None
autocmd FileChangedShell * echohl WarningMsg | echo "File changed shell." | echohl None
Попробуйте : help FileChangedShell
для получения дополнительной информации.
Я уже некоторое время использую FileChangedRO
для автоматической проверки файлов при их редактировании, и предупреждение W12 также меня раздражает. Проблема в том, что p4 edit обновляет атрибуты файла, убирая флаг только для чтения. Если в ходе первоначального редактирования вы также изменяете файл, Vim видит в этом конфликт, поскольку он больше не доступен только для чтения. Вот решение, которое я использую, которое немного более консервативно в отношении использования FileChangedShell
в случае, если файл был изменен извне по какой-либо другой причине.
let s:IgnoreChange=0
autocmd! FileChangedRO * nested
\ let s:IgnoreChange=1 |
\ call system("p4 edit " . expand("%")) |
\ set noreadonly
autocmd! FileChangedShell *
\ if 1 == s:IgnoreChange |
\ let v:fcs_choice="" |
\ let s:IgnoreChange=0 |
\ else |
\ let v:fcs_choice="ask" |
\ endif