Код JaredPar работает, но только для одного уровня наследования. Для неограниченного уровня наследования используйте следующий код
public bool IsTypeDerivedFromGenericType(Type typeToCheck, Type genericType)
{
if (typeToCheck == typeof(object))
{
return false;
}
else if (typeToCheck == null)
{
return false;
}
else if (typeToCheck.IsGenericType && typeToCheck.GetGenericTypeDefinition() == genericType)
{
return true;
}
else
{
return IsTypeDerivedFromGenericType(typeToCheck.BaseType, genericType);
}
}
Опция 1:
Запись функция, подобная этому и месту это в Ваших настройках запуска:
function myex()
execute ':w'
execute ':!!'
endfunction
Вы могли даже отобразиться, ключевая комбинация к нему - смотрят документы.
<час>Опция 2 (лучше):
Взгляд на документацию для переотображения нажатий клавиш - можно быть в состоянии выполнить его через простую ключевую перекарту. Следующие работы, но имеет "filename.py" hardcoded. Возможно, можно ли закопать и выяснить ли, как заменить это текущим файлом?
:map <F2> <Esc>:w<CR>:!filename.py<CR>
После отображения этого, можно просто нажать F2 в командном режиме.
IMAP, vmap, и т.д.... отображения в различных режимах. Вышеупомянутое только относится к командному режиму. Следующее должно работать в режиме вставки также:
:imap <F2> <Esc>:w<CR>:!filename.py<CR>a
Раздел 40.1 из руководства VIM очень полезен.
Хорошо, самая простая форма того, что Вы ищете, является командой канала. Это позволяет Вам выполнять несколько команд cmdline на той же строке. В Вашем случае две команды являются записью 'w' и выполняют текущий файл'! %: p'. Если у Вас есть определенная команда, Вы выполняете для Вас текущий файл, вторая команда становится, например,'! % Python: p'. Так, самый простой ответ Вам вопрос становится:
:w | ! %:p
^ ^ ^
| | |--Execute current file
| |--Chain two commands
|--Save current file
Одна последняя вещь отметить состоит в том, что не все команды могут быть объединены в цепочку. Согласно документы Vim , определенные команды принимают канал как аргумент и таким образом повреждают цепочку...
Используйте автозапись опция:
:set autowrite
Запись содержание файла, если это было изменено на каждом: затем: перемотка: в последний раз: во-первых: предыдущий: остановитесь: приостановите: тег, :! : сделайте, CTRL-] и команда CTRL-^ [...]
Комбинация команды, кажется, работает до |
символ, поэтому возможно, что-то как искажение :w|!your-command-here
к отличному сочетанию клавиш?
Здесь Вы идете:
:nmap <F1> :w<cr>:!%<cr>
сохраняют & выполненный (необходимо быть в n режиме, хотя - просто добавляют esc и поскольку я режим)
Я получил следование из подсказок по энергии Wiki:
command! -complete=file -nargs=+ shell call s:runshellcommand(<q-args>)
function! s:runshellcommand(cmdline)
botright vnew
setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
call setline(1,a:cmdline)
call setline(2,substitute(a:cmdline,'.','=','g'))
execute 'silent $read !'.escape(a:cmdline,'%#')
setlocal nomodifiable
1
endfunction
, но измененный в новинку для vnew на третьей строке, затем для Python у меня есть следующий
map <F9> :w:Shell python %<cr><c-w>
, удар f9 сохраняет, выполняет и выводит вывод в новое вертикально, буфер царапины разделения, для легкого дергания/сохранения и т.д.... также поражает c-w, таким образом, я только должен нажать h/c для закрытия, это / пятится к моему коду.
Полагают, что переключение БЕЗДЕЙСТВУЕТ. F5 делает все.
Рассматривают переключение на Комодо. Можно определить команду так, чтобы F5 сделал все.