Существует стандартная функция для синхронизации данных (и метаданные) одного файла: fsync
. Нет никакой стандартной или общей команды оболочки для доступа к нему, но можно использовать perl's sync
метод в IO::Handle
:
perl -MIO::File -e 'new IO::File($ARGV[0], "r+")->sync()' filename
Нет никакой стандартной или общей команды функции или оболочки для синхронизации всего одного раздела.
В недавних системах Linux, существует syncfs
системный вызов (представленный в ядре 2.6.39, и выставленный начиная с glibc 2.14). Я не думаю, что этот системный вызов выставляется в coreutils или util-linux все же.
Тем временем я придумал следующий подход:
noremap <script> <unique> <SID><\O> <Nop>
inoremap <script> <unique> <SID><\O> <C-\><C-O><SID><\O>
cnoremap <script> <unique> <SID><\O> <C-\><C-N><SID><\O>
noremap <script> <unique> <SID><\N> <Nop>
noremap! <script> <unique> <SID><\N> <C-\><C-N><SID><\N>
Для каждого режима Vim <SID><\O>
сочетание клавиш отображается для соответствующего выхода (например. <C-\><C-O>
) от текущего режима Vim (например, режим вставки) к его нормальному режиму. Правая сторона каждого отображения заканчивается в его левой стороне (например. <SID><\O>
) чтобы рекурсивно попытаться выйти снова. Локальное для сценария (<script>
, <SID>
) остановки рекурсии как скоро последняя последовательность клавиши выхода достигают нормального режима Vim в который <SID><\O>
сочетание клавиш ни на чем не отображается (<Nop>
).
Аналогично <SID><\N>
сочетание клавиш отображается на не, только выходят однажды (<SID><\O>
) от, например, режим вставки прежде, чем возвратиться назад, но постоянно остаются в нормальном режиме.
С помощью вышеупомянутых определений я отобразился <F1>
и <S-F1>
функциональные клавиши следующим образом:
noremap <script> <unique> <expr> <F1> <SID>ToggleHelp(':<C-U>help', '<SID>')
noremap! <script> <unique> <expr> <F1> <SID>ToggleHelp(':<C-U>help', '<SID>')
noremap <script> <unique> <expr> <S-F1> <SID>ToggleHelp(':<C-U>helpgrep', '<SID>')
noremap! <script> <unique> <expr> <S-F1> <SID>ToggleHelp(':<C-U>helpgrep', '<SID>')
function! s:ToggleHelp(cmd, sid)
ToggleVar s:HelpCwordOn
let a=s:HelpCwordOn ? '<cword>' : '<cWORD>'
return a:sid . '<\O>' . a:cmd . ' ' . expand(a) . ' '
endfunction
command! -bang -nargs=+ ToggleVar call <SID>ToggleVar(<bang>0, <f-args>)
function! s:ToggleVar(bang, var)
let {a:var}=exists(a:var) ? !{a:var} : !a:bang
endfunction
Вместо того, чтобы иметь <F1>
ключ просто открывает справку Vim's в новом окне, это запускается :help
команда с внутренним словом (<cword>
) под курсором. Последовательно нажимающим <F1>
ключ, каждый переключается на внешнее слово (<cWORD>
) и переключатели назад снова.
Эти 4 отображения от варианта использования выше могли также быть определены следующим образом для не повторения себя; т.е. хранение его "сохнет":
let a='noremap'
let b='<script> <unique> <expr>'
let c='<F1>'
let d='<S-F1>'
let e='<SID>ToggleHelp('':<C-U>help'
let f='grep'
let g=''', ''<SID>'')'
let h=b . ' ' . c . ' ' . e . g
let i=b . ' ' . d . ' ' . e . f . g
exec a . ' ' . h
exec a . '! ' . h
exec a . ' ' . i
exec a . '! ' . i