Вы можете настроить некоторые сокращения Vim, чтобы сделать это для вас.
iab inc #include ""
iab Inc #include <>
Затем, набрав inc<SPACE>
Vim автоматически расширит это до #include ""
.Вы можете добавить все виды сокращений, чтобы уменьшить количество требуемых нажатий клавиш.
Если вы хотите продвинуться дальше, я поделюсь небольшим продолжающимся моим экспериментом по созданию сокращения C ++ ' ».Хотя это, безусловно, уменьшает количество нажатий клавиш, необходимых для ввода кода, я не использовал это достаточно долго, чтобы определить, стоит ли дополнительная умственная сложность запоминания стенографии.(Вероятно, нет!)
Вам нужно будет установить UltiSnips , чтобы это работало.Вероятно, вы могли бы сделать большую часть этого, используя функцию аббревиатуры Vim, но я обнаружил, что она лучше всего работает с выделенным завершителем фрагмента.
После установки UltiSnips у вас уже будет готово несколько фрагментов C и C ++, включая готовые к использованию, включая#include ""
пример, упомянутый выше.
Я добавил следующее (плюс много, много больше!) в мой файл cpp.snippets.
snippet sptr "std::shared_ptr< type >"
std::shared_ptr< ${1:type} >
endsnippet
Когда я хочу shared_ptr, явведите sptr
и нажмите клавишу завершения фрагмента.UltiSnips завершает это как std::shared_ptr< type >
с выбранным словом type
, так что я могу продолжать вводить тип шаблона без паузы.
В этом надуманном примере показаны некоторые сокращения.Это то, что я мог бы набрать:
// <C> is where I would press the UltiSnip complete/next key.
fun<C>sptr<C><C>load_widget<C>cu32<C>offset<C>, cc<C>name<C>ret<C>msptr<C>widget<C>offset<C>name<C>;
Что расширяется до:
std::shared_ptr< widget > load_widget( const std::uint32_t offset, const char* name )
{
return std::make_shared< widget >( offset, name );
}
Грубый подсчет показывает, что это уменьшает примерно 136 нажатий клавиш до 100. С плагинами Omnicomplete или YouCompleteMe этосокращается, так как имена переменных и функций часто могут быть заполнены после ввода первых 2 или 3 символов.
Я стараюсь придерживаться этого шаблона при создании сокращения для типов: [c]type[r|p]
.[c]
является необязательным const, [r]
или [p]
для необязательной ссылки или указателя.(r
и p
и мне легче набрать, чем &
и *
).Например, std::string
имеет следующую сокращенную запись:
str = std::string
strp = std::string*
strr = std::string&
cstr = const std::string
cstrp = const std::string*
cstrr = const std::string&
Так что cstrr
, наиболее распространенный из них в моем коде, сокращает 19 нажатий клавиш (есть конечный пробел) до 6.