Для наблюдения списка текущих буферов я использую:
:ls
<час> To открывают новый файл, я использую
:e ../myFile.pl
с расширенным заполнением клавишей Tab (поместите set wildmenu
в Ваш .vimrc
).
Примечание: можно также использовать :find
, который будет искать ряд путей Вас, но необходимо настроить те пути сначала.
Для переключения между всеми открытыми файлами я использую
:b myfile
с расширенным заполнением клавишей Tab (все еще set wildmenu
).
Примечание: :b#
выбирает последний посещаемый файл, таким образом, можно использовать его для переключения быстро между двумя файлами.
Ctrl-W s
и Ctrl-W v
для разделения текущего окна горизонтально и вертикально. Можно также использовать :split
и :vertical split
(:sp
и :vs
)
Ctrl-W w
для переключения между открытыми окнами, и Ctrl-W h
(или j
или k
или l
) для навигации через открытые окна.
Ctrl-W c
для закрытия текущего окна, и Ctrl-W o
для закрытия всех окон кроме текущего.
Стартовая энергия с -o
или -O
флаг открывает каждый файл в своем собственном разделении.
Со всеми они мне не нужны вкладки в Vim, и мои пальцы находят мои буферы, не мои глаза.
Примечание: если Вы хотите, чтобы все файлы перешли к тому же экземпляру Vim, запустите Vim с --remote-silent
опция.
Во-первых, я настоятельно рекомендую книгу Майкла Фезера " Эффективная работа с устаревшим кодом ». Все дело в том, как добавить автоматические модульные тесты в устаревшее приложение, в котором нет тестов. Если вам интересно, «как мне вообще начать тестировать эту кучу кода», то эта книга для вас.
Майкл также является автором CppUnit, среды тестирования с открытым исходным кодом, подобной NUnit, для кода C ++. Вы можете найти его здесь: http://sourceforge.net/projects/cppunit/ .
Один из простых способов добавления тестов - это добавить конфигурацию UnitTest в ваше решение. Эта конфигурация будет компилировать ваш код, но вместо того, чтобы связывать его с вашим main.CPP, вы исключаете свой main.cpp из сборки и включаете UnitTestMain.cpp, где вы размещаете вызовы для выполнения модульных тестов. Мы начали этот путь очень давно, когда еще ничего не знали. Тем не менее, вы тратите много времени, включая и исключая все различные модули testMyCode.cpp для различных конфигураций, и через некоторое время это утомляет. Мы обнаружили, что разработчикам этот подход не слишком нравится.
Намного лучший подход - добавить в решение проект модульного тестирования с зависимостью сборки от вашего реального проекта. Если проект называется Foo.vcproj, назовите его Foo_test.vcproj. Этот проект содержит только ваш тестовый код, он # включает ваши заголовки Foo и ссылается на ваши скомпилированные модули fooCode.obj. Добавьте вызов для выполнения Foo_test.exe в качестве этапа после сборки сборки Foo_test, и он автоматически запускает модульные тесты во время сборки. Если какие-либо модульные тесты терпят неудачу, сборка не выполняется. Если на вашем сервере сборки настроены закрытые проверки, никто не сможет регистрировать изменения, нарушающие существующие тесты.
Я думаю, что лучше всего иметь большую часть тестируемого кода в библиотеке, но не обязательно практично во всех случаях.
Одно из решений - иметь отдельную конфигурацию проекта (например, Debug, Release и Test) и поместите тестовый код в отдельные файлы, помеченные как «Excluded From Build» в конфигурациях Debug и Release. Вы можете либо иметь простой код для запуска тестов в #ifdef
, либо иметь заглушку тестового средства запуска, которое включено в не тестовые сборки.
Другой вариант (хотя он довольно хакерский ) заключается в том, чтобы ваш тестовый код запускался из WinMain
, а ваш производственный код - из обычного старого main
. При сборке с использованием подсистемы "Windows" ваши тесты будут выполняться, и при сборке для подсистемы консоли
ваш производственный код будет работать. Однако я не знаю, удалит ли компоновщик не вызываемые тестовые функции из производственной сборки.