sure; there's a system view named sys.database_permissions.
this will give you users and groups that have the permission you are looking for...but you might need to expand group members if you want individuals who inherit from the group.
also, anyone in the sysadmin role inherently has that permission as well, but it's implied, and not explicit.
select usrz.*
from sys.database_permissions permz
inner join sys.database_principals usrz
ON permz.grantee_principal_id = usrz.principal_id
WHERE permission_name='VIEW DEFINITION'
Lowell