Как я могу осуществить проверку энергии автоматически, если файл изменился внешне?

Я обычно открываю много файлов на вкладках с vim -p. Действительно ли возможно проверить, был ли какой-либо из файлов изменен за пределами Vim начиная с запущенного редактирования?

9
задан Eugene Yarmash 24 February 2010 в 20:06
поделиться

6 ответов

Добавьте эти строки в свой .vimrc :

au FocusGained,BufEnter * :silent! checktime
au FocusLost,WinLeave * :silent! w

В основном проверьте и перезагрузите (или удалите) внешние изменения, когда Vim или текущий буфер получает фокус, и, опционально, автосохранение при выходе из фокуса.

Источник: Vim Wiki .

10
ответ дан 4 December 2019 в 09:36
поделиться

vim обычно автоматически предупреждает меня, если обнаруживает внешнее изменение файла; однако при просмотре документации кажется, что вы можете вызвать эту проверку вручную с помощью : checktime

К сожалению, я не знаю, как отключить эту вышеупомянутую автоматическую проверку, чтобы проверить и посмотреть, правильно ли работает checktime, поэтому это ответ может быть совершенно неверным.

3
ответ дан 4 December 2019 в 09:36
поделиться

Поскольку в ошибке упоминается проблема с именем веб-метода, я подозреваю, что это полностью связано с проблемами в том, как WSDL генерируется и сопоставляется с веб-службой. Я вижу две потенциальные проблемы:

  1. ID является ужасно распространенным именем и может быть зарезервирован или может вызвать конфликты. Попробуйте переименовать его в objectId (заглавные имена параметров в любом случае не являются нормой для .NET)
  2. WSDL не имеет понятия универсальных типов. В зависимости от генератора имя типа, сгенерированное для List < CustomObject > или CustomObject [] , может конфликтовать с именем параметра CustomObjectList . Попробуйте переименовать второй параметр customObjects .

Или, возможно, здесь есть какие-то другие глупые рамочные проблемы. В любом случае следует добавить в вопрос WSDL, созданный .NET. Можно получить XML-файл WSDL, загрузив файл/manageobjects.asmx? WSDL с веб-сервера.

-121--4435093-

Переопределение конкретных методов ComponentAdapter является удобной альтернативой реализации всех методов ComponentListener .

-121--1473677-

Для получения дополнительной информации используйте : edit

: help: edit .

2
ответ дан 4 December 2019 в 09:36
поделиться

При размещении службы WCF в качестве службы Windows вы больше не полагаетесь на IIS. Единственная общая часть, я полагаю, это стек протоколов HTTP.SYS. Я бы предложил вам активировать вход в файл конфигурации службы, который даст вам обширную информацию:

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
        <source name="System.ServiceModel" 
                switchValue="Information, ActivityTracing"
                propagateActivity="true">
            <listeners>
               <add name="sdt" 
                    type="System.Diagnostics.XmlWriterTraceListener" 
                    initializeData= "WcfDetailTrace.svclog" />
            </listeners>
        </source>
    </sources>
</system.diagnostics>

, а затем использовать SvcTrireViewer.exe для анализа полученных данных журнала.

-121--1948937-

То, что вы делаете, правильно, и присутствуют нулевые значения.

>>> "5325|*Alan|*|*".split(/\|\*/)
["5325", "Alan", "", ""]
-121--1948939-

Можно узнать, изменяется ли буфер в активном окне, выполнив команду:

:set mod?

Если он возвращает nomodified , то содержимое буфера совпадает с содержимым соответствующего файла. Если возвращается modified , то буфер имеет несохраненные изменения.

По умолчанию в строке состояния отображается символ [+] , если текущий буфер был изменен. Строка состояния обычно отображается только при наличии разделенных окон. Если вы хотите показать строку состояния, даже если у вас есть только одно окно, выполните:

:set laststatus=2

Есть хорошая статья о Настройка строки состояния на Vim Recipes.

1
ответ дан 4 December 2019 в 09:36
поделиться
let s:pid=system("ps -p $$ -o ppid=")+0
if !exists('g:watches')
    let g:watches={}
else
    finish
endif
function! ModWatch(fname, match)
    let fname=fnamemodify(a:fname, ':p')
    if has_key(g:watches, fname)
        return
    endif
    let shellscript=
                \"while true ; do".
                \"    inotifywait ".shellescape(fname)." ; ".
                \"    kill -WINCH ".s:pid." ; ".
                \"done"
    echo shellscript
    echo shellescape(shellscript)
    let pid=system("sh -c ".shellescape(shellscript)." &>/dev/null & echo $!")+0
    call extend(g:watches, { fname : pid })
    augroup ModWatch
        execute "autocmd! BufWipeOut ".a:match
        execute "autocmd BufWipeOut ".a:match.' call DeleteWatch("'.
                    \escape(fname, '\"|').'")'
    augroup END
endfunction
function! DeleteWatch(fname)
    call system("kill ".g:watches[a:fname])
    unlet g:watches[a:fname]
endfunction
augroup ModWatch
    autocmd!
    autocmd VimResized * checktime
    autocmd BufNew * call ModWatch(expand("<afile>"), expand("<amatch>"))
augroup END
0
ответ дан 4 December 2019 в 09:36
поделиться

Сегодня я наткнулся на интересную находку, связанную с этим вопросом ...

Скрыто в / usr / share / vim / vim71 / vimrc_example .vim есть эта команда:

" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
        \ | wincmd p | diffthis

Она открывает окно, подобное vimdiff , с текущим буфером и базовым файлом, выделяя все изменения между ними.

6
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: